/* @preserve * The MIT License (MIT) * * Copyright (c) 2013-2017 Petka Antonov * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * */ /** * bluebird build version 3.5.1 * Features enabled: core * Features disabled: race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each */ !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_=="function"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_=="function"&&_dereq_;for(var o=0;o 0) { var fn = queue.shift(); if (typeof fn !== "function") { fn._settlePromises(); continue; } var receiver = queue.shift(); var arg = queue.shift(); fn.call(receiver, arg); } }; Async.prototype._drainQueues = function () { this._drainQueue(this._normalQueue); this._reset(); this._haveDrainedQueues = true; this._drainQueue(this._lateQueue); }; Async.prototype._queueTick = function () { if (!this._isTickUsed) { this._isTickUsed = true; this._schedule(this.drainQueues); } }; Async.prototype._reset = function () { this._isTickUsed = false; }; module.exports = Async; module.exports.firstLineError = firstLineError; },{"./queue":17,"./schedule":18,"./util":21}],2:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { var calledBind = false; var rejectThis = function(_, e) { this._reject(e); }; var targetRejected = function(e, context) { context.promiseRejectionQueued = true; context.bindingPromise._then(rejectThis, rejectThis, null, this, e); }; var bindingResolved = function(thisArg, context) { if (((this._bitField & 50397184) === 0)) { this._resolveCallback(context.target); } }; var bindingRejected = function(e, context) { if (!context.promiseRejectionQueued) this._reject(e); }; Promise.prototype.bind = function (thisArg) { if (!calledBind) { calledBind = true; Promise.prototype._propagateFrom = debug.propagateFromFunction(); Promise.prototype._boundValue = debug.boundValueFunction(); } var maybePromise = tryConvertToPromise(thisArg); var ret = new Promise(INTERNAL); ret._propagateFrom(this, 1); var target = this._target(); ret._setBoundTo(maybePromise); if (maybePromise instanceof Promise) { var context = { promiseRejectionQueued: false, promise: ret, target: target, bindingPromise: maybePromise }; target._then(INTERNAL, targetRejected, undefined, ret, context); maybePromise._then( bindingResolved, bindingRejected, undefined, ret, context); ret._setOnCancel(maybePromise); } else { ret._resolveCallback(target); } return ret; }; Promise.prototype._setBoundTo = function (obj) { if (obj !== undefined) { this._bitField = this._bitField | 2097152; this._boundTo = obj; } else { this._bitField = this._bitField & (~2097152); } }; Promise.prototype._isBound = function () { return (this._bitField & 2097152) === 2097152; }; Promise.bind = function (thisArg, value) { return Promise.resolve(value).bind(thisArg); }; }; },{}],3:[function(_dereq_,module,exports){ "use strict"; var old; if (typeof Promise !== "undefined") old = Promise; function noConflict() { try { if (Promise === bluebird) Promise = old; } catch (e) {} return bluebird; } var bluebird = _dereq_("./promise")(); bluebird.noConflict = noConflict; module.exports = bluebird; },{"./promise":15}],4:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, PromiseArray, apiRejection, debug) { var util = _dereq_("./util"); var tryCatch = util.tryCatch; var errorObj = util.errorObj; var async = Promise._async; Promise.prototype["break"] = Promise.prototype.cancel = function() { if (!debug.cancellation()) return this._warn("cancellation is disabled"); var promise = this; var child = promise; while (promise._isCancellable()) { if (!promise._cancelBy(child)) { if (child._isFollowing()) { child._followee().cancel(); } else { child._cancelBranched(); } break; } var parent = promise._cancellationParent; if (parent == null || !parent._isCancellable()) { if (promise._isFollowing()) { promise._followee().cancel(); } else { promise._cancelBranched(); } break; } else { if (promise._isFollowing()) promise._followee().cancel(); promise._setWillBeCancelled(); child = promise; promise = parent; } } }; Promise.prototype._branchHasCancelled = function() { this._branchesRemainingToCancel--; }; Promise.prototype._enoughBranchesHaveCancelled = function() { return this._branchesRemainingToCancel === undefined || this._branchesRemainingToCancel <= 0; }; Promise.prototype._cancelBy = function(canceller) { if (canceller === this) { this._branchesRemainingToCancel = 0; this._invokeOnCancel(); return true; } else { this._branchHasCancelled(); if (this._enoughBranchesHaveCancelled()) { this._invokeOnCancel(); return true; } } return false; }; Promise.prototype._cancelBranched = function() { if (this._enoughBranchesHaveCancelled()) { this._cancel(); } }; Promise.prototype._cancel = function() { if (!this._isCancellable()) return; this._setCancelled(); async.invoke(this._cancelPromises, this, undefined); }; Promise.prototype._cancelPromises = function() { if (this._length() > 0) this._settlePromises(); }; Promise.prototype._unsetOnCancel = function() { this._onCancelField = undefined; }; Promise.prototype._isCancellable = function() { return this.isPending() && !this._isCancelled(); }; Promise.prototype.isCancellable = function() { return this.isPending() && !this.isCancelled(); }; Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { if (util.isArray(onCancelCallback)) { for (var i = 0; i < onCancelCallback.length; ++i) { this._doInvokeOnCancel(onCancelCallback[i], internalOnly); } } else if (onCancelCallback !== undefined) { if (typeof onCancelCallback === "function") { if (!internalOnly) { var e = tryCatch(onCancelCallback).call(this._boundValue()); if (e === errorObj) { this._attachExtraTrace(e.e); async.throwLater(e.e); } } } else { onCancelCallback._resultCancelled(this); } } }; Promise.prototype._invokeOnCancel = function() { var onCancelCallback = this._onCancel(); this._unsetOnCancel(); async.invoke(this._doInvokeOnCancel, this, onCancelCallback); }; Promise.prototype._invokeInternalOnCancel = function() { if (this._isCancellable()) { this._doInvokeOnCancel(this._onCancel(), true); this._unsetOnCancel(); } }; Promise.prototype._resultCancelled = function() { this.cancel(); }; }; },{"./util":21}],5:[function(_dereq_,module,exports){ "use strict"; module.exports = function(NEXT_FILTER) { var util = _dereq_("./util"); var getKeys = _dereq_("./es5").keys; var tryCatch = util.tryCatch; var errorObj = util.errorObj; function catchFilter(instances, cb, promise) { return function(e) { var boundTo = promise._boundValue(); predicateLoop: for (var i = 0; i < instances.length; ++i) { var item = instances[i]; if (item === Error || (item != null && item.prototype instanceof Error)) { if (e instanceof item) { return tryCatch(cb).call(boundTo, e); } } else if (typeof item === "function") { var matchesPredicate = tryCatch(item).call(boundTo, e); if (matchesPredicate === errorObj) { return matchesPredicate; } else if (matchesPredicate) { return tryCatch(cb).call(boundTo, e); } } else if (util.isObject(e)) { var keys = getKeys(item); for (var j = 0; j < keys.length; ++j) { var key = keys[j]; if (item[key] != e[key]) { continue predicateLoop; } } return tryCatch(cb).call(boundTo, e); } } return NEXT_FILTER; }; } return catchFilter; }; },{"./es5":10,"./util":21}],6:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise) { var longStackTraces = false; var contextStack = []; Promise.prototype._promiseCreated = function() {}; Promise.prototype._pushContext = function() {}; Promise.prototype._popContext = function() {return null;}; Promise._peekContext = Promise.prototype._peekContext = function() {}; function Context() { this._trace = new Context.CapturedTrace(peekContext()); } Context.prototype._pushContext = function () { if (this._trace !== undefined) { this._trace._promiseCreated = null; contextStack.push(this._trace); } }; Context.prototype._popContext = function () { if (this._trace !== undefined) { var trace = contextStack.pop(); var ret = trace._promiseCreated; trace._promiseCreated = null; return ret; } return null; }; function createContext() { if (longStackTraces) return new Context(); } function peekContext() { var lastIndex = contextStack.length - 1; if (lastIndex >= 0) { return contextStack[lastIndex]; } return undefined; } Context.CapturedTrace = null; Context.create = createContext; Context.deactivateLongStackTraces = function() {}; Context.activateLongStackTraces = function() { var Promise_pushContext = Promise.prototype._pushContext; var Promise_popContext = Promise.prototype._popContext; var Promise_PeekContext = Promise._peekContext; var Promise_peekContext = Promise.prototype._peekContext; var Promise_promiseCreated = Promise.prototype._promiseCreated; Context.deactivateLongStackTraces = function() { Promise.prototype._pushContext = Promise_pushContext; Promise.prototype._popContext = Promise_popContext; Promise._peekContext = Promise_PeekContext; Promise.prototype._peekContext = Promise_peekContext; Promise.prototype._promiseCreated = Promise_promiseCreated; longStackTraces = false; }; longStackTraces = true; Promise.prototype._pushContext = Context.prototype._pushContext; Promise.prototype._popContext = Context.prototype._popContext; Promise._peekContext = Promise.prototype._peekContext = peekContext; Promise.prototype._promiseCreated = function() { var ctx = this._peekContext(); if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; }; }; return Context; }; },{}],7:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, Context) { var getDomain = Promise._getDomain; var async = Promise._async; var Warning = _dereq_("./errors").Warning; var util = _dereq_("./util"); var canAttachTrace = util.canAttachTrace; var unhandledRejectionHandled; var possiblyUnhandledRejection; var bluebirdFramePattern = /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/; var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/; var stackFramePattern = null; var formatStack = null; var indentStackFrames = false; var printWarning; var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && (true || util.env("BLUEBIRD_DEBUG") || util.env("NODE_ENV") === "development")); var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && (debugging || util.env("BLUEBIRD_WARNINGS"))); var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN")); Promise.prototype.suppressUnhandledRejections = function() { var target = this._target(); target._bitField = ((target._bitField & (~1048576)) | 524288); }; Promise.prototype._ensurePossibleRejectionHandled = function () { if ((this._bitField & 524288) !== 0) return; this._setRejectionIsUnhandled(); var self = this; setTimeout(function() { self._notifyUnhandledRejection(); }, 1); }; Promise.prototype._notifyUnhandledRejectionIsHandled = function () { fireRejectionEvent("rejectionHandled", unhandledRejectionHandled, undefined, this); }; Promise.prototype._setReturnedNonUndefined = function() { this._bitField = this._bitField | 268435456; }; Promise.prototype._returnedNonUndefined = function() { return (this._bitField & 268435456) !== 0; }; Promise.prototype._notifyUnhandledRejection = function () { if (this._isRejectionUnhandled()) { var reason = this._settledValue(); this._setUnhandledRejectionIsNotified(); fireRejectionEvent("unhandledRejection", possiblyUnhandledRejection, reason, this); } }; Promise.prototype._setUnhandledRejectionIsNotified = function () { this._bitField = this._bitField | 262144; }; Promise.prototype._unsetUnhandledRejectionIsNotified = function () { this._bitField = this._bitField & (~262144); }; Promise.prototype._isUnhandledRejectionNotified = function () { return (this._bitField & 262144) > 0; }; Promise.prototype._setRejectionIsUnhandled = function () { this._bitField = this._bitField | 1048576; }; Promise.prototype._unsetRejectionIsUnhandled = function () { this._bitField = this._bitField & (~1048576); if (this._isUnhandledRejectionNotified()) { this._unsetUnhandledRejectionIsNotified(); this._notifyUnhandledRejectionIsHandled(); } }; Promise.prototype._isRejectionUnhandled = function () { return (this._bitField & 1048576) > 0; }; Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { return warn(message, shouldUseOwnTrace, promise || this); }; Promise.onPossiblyUnhandledRejection = function (fn) { var domain = getDomain(); possiblyUnhandledRejection = typeof fn === "function" ? (domain === null ? fn : util.domainBind(domain, fn)) : undefined; }; Promise.onUnhandledRejectionHandled = function (fn) { var domain = getDomain(); unhandledRejectionHandled = typeof fn === "function" ? (domain === null ? fn : util.domainBind(domain, fn)) : undefined; }; var disableLongStackTraces = function() {}; Promise.longStackTraces = function () { if (async.haveItemsQueued() && !config.longStackTraces) { throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); } if (!config.longStackTraces && longStackTracesIsSupported()) { var Promise_captureStackTrace = Promise.prototype._captureStackTrace; var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; config.longStackTraces = true; disableLongStackTraces = function() { if (async.haveItemsQueued() && !config.longStackTraces) { throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); } Promise.prototype._captureStackTrace = Promise_captureStackTrace; Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; Context.deactivateLongStackTraces(); async.enableTrampoline(); config.longStackTraces = false; }; Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; Context.activateLongStackTraces(); async.disableTrampolineIfNecessary(); } }; Promise.hasLongStackTraces = function () { return config.longStackTraces && longStackTracesIsSupported(); }; var fireDomEvent = (function() { try { if (typeof CustomEvent === "function") { var event = new CustomEvent("CustomEvent"); util.global.dispatchEvent(event); return function(name, event) { var domEvent = new CustomEvent(name.toLowerCase(), { detail: event, cancelable: true }); return !util.global.dispatchEvent(domEvent); }; } else if (typeof Event === "function") { var event = new Event("CustomEvent"); util.global.dispatchEvent(event); return function(name, event) { var domEvent = new Event(name.toLowerCase(), { cancelable: true }); domEvent.detail = event; return !util.global.dispatchEvent(domEvent); }; } else { var event = document.createEvent("CustomEvent"); event.initCustomEvent("testingtheevent", false, true, {}); util.global.dispatchEvent(event); return function(name, event) { var domEvent = document.createEvent("CustomEvent"); domEvent.initCustomEvent(name.toLowerCase(), false, true, event); return !util.global.dispatchEvent(domEvent); }; } } catch (e) {} return function() { return false; }; })(); var fireGlobalEvent = (function() { if (util.isNode) { return function() { return process.emit.apply(process, arguments); }; } else { if (!util.global) { return function() { return false; }; } return function(name) { var methodName = "on" + name.toLowerCase(); var method = util.global[methodName]; if (!method) return false; method.apply(util.global, [].slice.call(arguments, 1)); return true; }; } })(); function generatePromiseLifecycleEventObject(name, promise) { return {promise: promise}; } var eventToObjectGenerator = { promiseCreated: generatePromiseLifecycleEventObject, promiseFulfilled: generatePromiseLifecycleEventObject, promiseRejected: generatePromiseLifecycleEventObject, promiseResolved: generatePromiseLifecycleEventObject, promiseCancelled: generatePromiseLifecycleEventObject, promiseChained: function(name, promise, child) { return {promise: promise, child: child}; }, warning: function(name, warning) { return {warning: warning}; }, unhandledRejection: function (name, reason, promise) { return {reason: reason, promise: promise}; }, rejectionHandled: generatePromiseLifecycleEventObject }; var activeFireEvent = function (name) { var globalEventFired = false; try { globalEventFired = fireGlobalEvent.apply(null, arguments); } catch (e) { async.throwLater(e); globalEventFired = true; } var domEventFired = false; try { domEventFired = fireDomEvent(name, eventToObjectGenerator[name].apply(null, arguments)); } catch (e) { async.throwLater(e); domEventFired = true; } return domEventFired || globalEventFired; }; Promise.config = function(opts) { opts = Object(opts); if ("longStackTraces" in opts) { if (opts.longStackTraces) { Promise.longStackTraces(); } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { disableLongStackTraces(); } } if ("warnings" in opts) { var warningsOption = opts.warnings; config.warnings = !!warningsOption; wForgottenReturn = config.warnings; if (util.isObject(warningsOption)) { if ("wForgottenReturn" in warningsOption) { wForgottenReturn = !!warningsOption.wForgottenReturn; } } } if ("cancellation" in opts && opts.cancellation && !config.cancellation) { if (async.haveItemsQueued()) { throw new Error( "cannot enable cancellation after promises are in use"); } Promise.prototype._clearCancellationData = cancellationClearCancellationData; Promise.prototype._propagateFrom = cancellationPropagateFrom; Promise.prototype._onCancel = cancellationOnCancel; Promise.prototype._setOnCancel = cancellationSetOnCancel; Promise.prototype._attachCancellationCallback = cancellationAttachCancellationCallback; Promise.prototype._execute = cancellationExecute; propagateFromFunction = cancellationPropagateFrom; config.cancellation = true; } if ("monitoring" in opts) { if (opts.monitoring && !config.monitoring) { config.monitoring = true; Promise.prototype._fireEvent = activeFireEvent; } else if (!opts.monitoring && config.monitoring) { config.monitoring = false; Promise.prototype._fireEvent = defaultFireEvent; } } return Promise; }; function defaultFireEvent() { return false; } Promise.prototype._fireEvent = defaultFireEvent; Promise.prototype._execute = function(executor, resolve, reject) { try { executor(resolve, reject); } catch (e) { return e; } }; Promise.prototype._onCancel = function () {}; Promise.prototype._setOnCancel = function (handler) { ; }; Promise.prototype._attachCancellationCallback = function(onCancel) { ; }; Promise.prototype._captureStackTrace = function () {}; Promise.prototype._attachExtraTrace = function () {}; Promise.prototype._clearCancellationData = function() {}; Promise.prototype._propagateFrom = function (parent, flags) { ; ; }; function cancellationExecute(executor, resolve, reject) { var promise = this; try { executor(resolve, reject, function(onCancel) { if (typeof onCancel !== "function") { throw new TypeError("onCancel must be a function, got: " + util.toString(onCancel)); } promise._attachCancellationCallback(onCancel); }); } catch (e) { return e; } } function cancellationAttachCancellationCallback(onCancel) { if (!this._isCancellable()) return this; var previousOnCancel = this._onCancel(); if (previousOnCancel !== undefined) { if (util.isArray(previousOnCancel)) { previousOnCancel.push(onCancel); } else { this._setOnCancel([previousOnCancel, onCancel]); } } else { this._setOnCancel(onCancel); } } function cancellationOnCancel() { return this._onCancelField; } function cancellationSetOnCancel(onCancel) { this._onCancelField = onCancel; } function cancellationClearCancellationData() { this._cancellationParent = undefined; this._onCancelField = undefined; } function cancellationPropagateFrom(parent, flags) { if ((flags & 1) !== 0) { this._cancellationParent = parent; var branchesRemainingToCancel = parent._branchesRemainingToCancel; if (branchesRemainingToCancel === undefined) { branchesRemainingToCancel = 0; } parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; } if ((flags & 2) !== 0 && parent._isBound()) { this._setBoundTo(parent._boundTo); } } function bindingPropagateFrom(parent, flags) { if ((flags & 2) !== 0 && parent._isBound()) { this._setBoundTo(parent._boundTo); } } var propagateFromFunction = bindingPropagateFrom; function boundValueFunction() { var ret = this._boundTo; if (ret !== undefined) { if (ret instanceof Promise) { if (ret.isFulfilled()) { return ret.value(); } else { return undefined; } } } return ret; } function longStackTracesCaptureStackTrace() { this._trace = new CapturedTrace(this._peekContext()); } function longStackTracesAttachExtraTrace(error, ignoreSelf) { if (canAttachTrace(error)) { var trace = this._trace; if (trace !== undefined) { if (ignoreSelf) trace = trace._parent; } if (trace !== undefined) { trace.attachExtraTrace(error); } else if (!error.__stackCleaned__) { var parsed = parseStackAndMessage(error); util.notEnumerableProp(error, "stack", parsed.message + "\n" + parsed.stack.join("\n")); util.notEnumerableProp(error, "__stackCleaned__", true); } } } function checkForgottenReturns(returnValue, promiseCreated, name, promise, parent) { if (returnValue === undefined && promiseCreated !== null && wForgottenReturn) { if (parent !== undefined && parent._returnedNonUndefined()) return; if ((promise._bitField & 65535) === 0) return; if (name) name = name + " "; var handlerLine = ""; var creatorLine = ""; if (promiseCreated._trace) { var traceLines = promiseCreated._trace.stack.split("\n"); var stack = cleanStack(traceLines); for (var i = stack.length - 1; i >= 0; --i) { var line = stack[i]; if (!nodeFramePattern.test(line)) { var lineMatches = line.match(parseLinePattern); if (lineMatches) { handlerLine = "at " + lineMatches[1] + ":" + lineMatches[2] + ":" + lineMatches[3] + " "; } break; } } if (stack.length > 0) { var firstUserLine = stack[0]; for (var i = 0; i < traceLines.length; ++i) { if (traceLines[i] === firstUserLine) { if (i > 0) { creatorLine = "\n" + traceLines[i - 1]; } break; } } } } var msg = "a promise was created in a " + name + "handler " + handlerLine + "but was not returned from it, " + "see http://goo.gl/rRqMUw" + creatorLine; promise._warn(msg, true, promiseCreated); } } function deprecated(name, replacement) { var message = name + " is deprecated and will be removed in a future version."; if (replacement) message += " Use " + replacement + " instead."; return warn(message); } function warn(message, shouldUseOwnTrace, promise) { if (!config.warnings) return; var warning = new Warning(message); var ctx; if (shouldUseOwnTrace) { promise._attachExtraTrace(warning); } else if (config.longStackTraces && (ctx = Promise._peekContext())) { ctx.attachExtraTrace(warning); } else { var parsed = parseStackAndMessage(warning); warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); } if (!activeFireEvent("warning", warning)) { formatAndLogError(warning, "", true); } } function reconstructStack(message, stacks) { for (var i = 0; i < stacks.length - 1; ++i) { stacks[i].push("From previous event:"); stacks[i] = stacks[i].join("\n"); } if (i < stacks.length) { stacks[i] = stacks[i].join("\n"); } return message + "\n" + stacks.join("\n"); } function removeDuplicateOrEmptyJumps(stacks) { for (var i = 0; i < stacks.length; ++i) { if (stacks[i].length === 0 || ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { stacks.splice(i, 1); i--; } } } function removeCommonRoots(stacks) { var current = stacks[0]; for (var i = 1; i < stacks.length; ++i) { var prev = stacks[i]; var currentLastIndex = current.length - 1; var currentLastLine = current[currentLastIndex]; var commonRootMeetPoint = -1; for (var j = prev.length - 1; j >= 0; --j) { if (prev[j] === currentLastLine) { commonRootMeetPoint = j; break; } } for (var j = commonRootMeetPoint; j >= 0; --j) { var line = prev[j]; if (current[currentLastIndex] === line) { current.pop(); currentLastIndex--; } else { break; } } current = prev; } } function cleanStack(stack) { var ret = []; for (var i = 0; i < stack.length; ++i) { var line = stack[i]; var isTraceLine = " (No stack trace)" === line || stackFramePattern.test(line); var isInternalFrame = isTraceLine && shouldIgnore(line); if (isTraceLine && !isInternalFrame) { if (indentStackFrames && line.charAt(0) !== " ") { line = " " + line; } ret.push(line); } } return ret; } function stackFramesAsArray(error) { var stack = error.stack.replace(/\s+$/g, "").split("\n"); for (var i = 0; i < stack.length; ++i) { var line = stack[i]; if (" (No stack trace)" === line || stackFramePattern.test(line)) { break; } } if (i > 0 && error.name != "SyntaxError") { stack = stack.slice(i); } return stack; } function parseStackAndMessage(error) { var stack = error.stack; var message = error.toString(); stack = typeof stack === "string" && stack.length > 0 ? stackFramesAsArray(error) : [" (No stack trace)"]; return { message: message, stack: error.name == "SyntaxError" ? stack : cleanStack(stack) }; } function formatAndLogError(error, title, isSoft) { if (typeof console !== "undefined") { var message; if (util.isObject(error)) { var stack = error.stack; message = title + formatStack(stack, error); } else { message = title + String(error); } if (typeof printWarning === "function") { printWarning(message, isSoft); } else if (typeof console.log === "function" || typeof console.log === "object") { console.log(message); } } } function fireRejectionEvent(name, localHandler, reason, promise) { var localEventFired = false; try { if (typeof localHandler === "function") { localEventFired = true; if (name === "rejectionHandled") { localHandler(promise); } else { localHandler(reason, promise); } } } catch (e) { async.throwLater(e); } if (name === "unhandledRejection") { if (!activeFireEvent(name, reason, promise) && !localEventFired) { formatAndLogError(reason, "Unhandled rejection "); } } else { activeFireEvent(name, promise); } } function formatNonError(obj) { var str; if (typeof obj === "function") { str = "[function " + (obj.name || "anonymous") + "]"; } else { str = obj && typeof obj.toString === "function" ? obj.toString() : util.toString(obj); var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; if (ruselessToString.test(str)) { try { var newStr = JSON.stringify(obj); str = newStr; } catch(e) { } } if (str.length === 0) { str = "(empty array)"; } } return ("(<" + snip(str) + ">, no stack trace)"); } function snip(str) { var maxChars = 41; if (str.length < maxChars) { return str; } return str.substr(0, maxChars - 3) + "..."; } function longStackTracesIsSupported() { return typeof captureStackTrace === "function"; } var shouldIgnore = function() { return false; }; var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; function parseLineInfo(line) { var matches = line.match(parseLineInfoRegex); if (matches) { return { fileName: matches[1], line: parseInt(matches[2], 10) }; } } function setBounds(firstLineError, lastLineError) { if (!longStackTracesIsSupported()) return; var firstStackLines = firstLineError.stack.split("\n"); var lastStackLines = lastLineError.stack.split("\n"); var firstIndex = -1; var lastIndex = -1; var firstFileName; var lastFileName; for (var i = 0; i < firstStackLines.length; ++i) { var result = parseLineInfo(firstStackLines[i]); if (result) { firstFileName = result.fileName; firstIndex = result.line; break; } } for (var i = 0; i < lastStackLines.length; ++i) { var result = parseLineInfo(lastStackLines[i]); if (result) { lastFileName = result.fileName; lastIndex = result.line; break; } } if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || firstFileName !== lastFileName || firstIndex >= lastIndex) { return; } shouldIgnore = function(line) { if (bluebirdFramePattern.test(line)) return true; var info = parseLineInfo(line); if (info) { if (info.fileName === firstFileName && (firstIndex <= info.line && info.line <= lastIndex)) { return true; } } return false; }; } function CapturedTrace(parent) { this._parent = parent; this._promisesCreated = 0; var length = this._length = 1 + (parent === undefined ? 0 : parent._length); captureStackTrace(this, CapturedTrace); if (length > 32) this.uncycle(); } util.inherits(CapturedTrace, Error); Context.CapturedTrace = CapturedTrace; CapturedTrace.prototype.uncycle = function() { var length = this._length; if (length < 2) return; var nodes = []; var stackToIndex = {}; for (var i = 0, node = this; node !== undefined; ++i) { nodes.push(node); node = node._parent; } length = this._length = i; for (var i = length - 1; i >= 0; --i) { var stack = nodes[i].stack; if (stackToIndex[stack] === undefined) { stackToIndex[stack] = i; } } for (var i = 0; i < length; ++i) { var currentStack = nodes[i].stack; var index = stackToIndex[currentStack]; if (index !== undefined && index !== i) { if (index > 0) { nodes[index - 1]._parent = undefined; nodes[index - 1]._length = 1; } nodes[i]._parent = undefined; nodes[i]._length = 1; var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; if (index < length - 1) { cycleEdgeNode._parent = nodes[index + 1]; cycleEdgeNode._parent.uncycle(); cycleEdgeNode._length = cycleEdgeNode._parent._length + 1; } else { cycleEdgeNode._parent = undefined; cycleEdgeNode._length = 1; } var currentChildLength = cycleEdgeNode._length + 1; for (var j = i - 2; j >= 0; --j) { nodes[j]._length = currentChildLength; currentChildLength++; } return; } } }; CapturedTrace.prototype.attachExtraTrace = function(error) { if (error.__stackCleaned__) return; this.uncycle(); var parsed = parseStackAndMessage(error); var message = parsed.message; var stacks = [parsed.stack]; var trace = this; while (trace !== undefined) { stacks.push(cleanStack(trace.stack.split("\n"))); trace = trace._parent; } removeCommonRoots(stacks); removeDuplicateOrEmptyJumps(stacks); util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); util.notEnumerableProp(error, "__stackCleaned__", true); }; var captureStackTrace = (function stackDetection() { var v8stackFramePattern = /^\s*at\s*/; var v8stackFormatter = function(stack, error) { if (typeof stack === "string") return stack; if (error.name !== undefined && error.message !== undefined) { return error.toString(); } return formatNonError(error); }; if (typeof Error.stackTraceLimit === "number" && typeof Error.captureStackTrace === "function") { Error.stackTraceLimit += 6; stackFramePattern = v8stackFramePattern; formatStack = v8stackFormatter; var captureStackTrace = Error.captureStackTrace; shouldIgnore = function(line) { return bluebirdFramePattern.test(line); }; return function(receiver, ignoreUntil) { Error.stackTraceLimit += 6; captureStackTrace(receiver, ignoreUntil); Error.stackTraceLimit -= 6; }; } var err = new Error(); if (typeof err.stack === "string" && err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { stackFramePattern = /@/; formatStack = v8stackFormatter; indentStackFrames = true; return function captureStackTrace(o) { o.stack = new Error().stack; }; } var hasStackAfterThrow; try { throw new Error(); } catch(e) { hasStackAfterThrow = ("stack" in e); } if (!("stack" in err) && hasStackAfterThrow && typeof Error.stackTraceLimit === "number") { stackFramePattern = v8stackFramePattern; formatStack = v8stackFormatter; return function captureStackTrace(o) { Error.stackTraceLimit += 6; try { throw new Error(); } catch(e) { o.stack = e.stack; } Error.stackTraceLimit -= 6; }; } formatStack = function(stack, error) { if (typeof stack === "string") return stack; if ((typeof error === "object" || typeof error === "function") && error.name !== undefined && error.message !== undefined) { return error.toString(); } return formatNonError(error); }; return null; })([]); if (typeof console !== "undefined" && typeof console.warn !== "undefined") { printWarning = function (message) { console.warn(message); }; if (util.isNode && process.stderr.isTTY) { printWarning = function(message, isSoft) { var color = isSoft ? "\u001b[33m" : "\u001b[31m"; console.warn(color + message + "\u001b[0m\n"); }; } else if (!util.isNode && typeof (new Error().stack) === "string") { printWarning = function(message, isSoft) { console.warn("%c" + message, isSoft ? "color: darkorange" : "color: red"); }; } } var config = { warnings: warnings, longStackTraces: false, cancellation: false, monitoring: false }; if (longStackTraces) Promise.longStackTraces(); return { longStackTraces: function() { return config.longStackTraces; }, warnings: function() { return config.warnings; }, cancellation: function() { return config.cancellation; }, monitoring: function() { return config.monitoring; }, propagateFromFunction: function() { return propagateFromFunction; }, boundValueFunction: function() { return boundValueFunction; }, checkForgottenReturns: checkForgottenReturns, setBounds: setBounds, warn: warn, deprecated: deprecated, CapturedTrace: CapturedTrace, fireDomEvent: fireDomEvent, fireGlobalEvent: fireGlobalEvent }; }; },{"./errors":9,"./util":21}],8:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise) { function returner() { return this.value; } function thrower() { throw this.reason; } Promise.prototype["return"] = Promise.prototype.thenReturn = function (value) { if (value instanceof Promise) value.suppressUnhandledRejections(); return this._then( returner, undefined, undefined, {value: value}, undefined); }; Promise.prototype["throw"] = Promise.prototype.thenThrow = function (reason) { return this._then( thrower, undefined, undefined, {reason: reason}, undefined); }; Promise.prototype.catchThrow = function (reason) { if (arguments.length <= 1) { return this._then( undefined, thrower, undefined, {reason: reason}, undefined); } else { var _reason = arguments[1]; var handler = function() {throw _reason;}; return this.caught(reason, handler); } }; Promise.prototype.catchReturn = function (value) { if (arguments.length <= 1) { if (value instanceof Promise) value.suppressUnhandledRejections(); return this._then( undefined, returner, undefined, {value: value}, undefined); } else { var _value = arguments[1]; if (_value instanceof Promise) _value.suppressUnhandledRejections(); var handler = function() {return _value;}; return this.caught(value, handler); } }; }; },{}],9:[function(_dereq_,module,exports){ "use strict"; var es5 = _dereq_("./es5"); var Objectfreeze = es5.freeze; var util = _dereq_("./util"); var inherits = util.inherits; var notEnumerableProp = util.notEnumerableProp; function subError(nameProperty, defaultMessage) { function SubError(message) { if (!(this instanceof SubError)) return new SubError(message); notEnumerableProp(this, "message", typeof message === "string" ? message : defaultMessage); notEnumerableProp(this, "name", nameProperty); if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } else { Error.call(this); } } inherits(SubError, Error); return SubError; } var _TypeError, _RangeError; var Warning = subError("Warning", "warning"); var CancellationError = subError("CancellationError", "cancellation error"); var TimeoutError = subError("TimeoutError", "timeout error"); var AggregateError = subError("AggregateError", "aggregate error"); try { _TypeError = TypeError; _RangeError = RangeError; } catch(e) { _TypeError = subError("TypeError", "type error"); _RangeError = subError("RangeError", "range error"); } var methods = ("join pop push shift unshift slice filter forEach some " + "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); for (var i = 0; i < methods.length; ++i) { if (typeof Array.prototype[methods[i]] === "function") { AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; } } es5.defineProperty(AggregateError.prototype, "length", { value: 0, configurable: false, writable: true, enumerable: true }); AggregateError.prototype["isOperational"] = true; var level = 0; AggregateError.prototype.toString = function() { var indent = Array(level * 4 + 1).join(" "); var ret = "\n" + indent + "AggregateError of:" + "\n"; level++; indent = Array(level * 4 + 1).join(" "); for (var i = 0; i < this.length; ++i) { var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; var lines = str.split("\n"); for (var j = 0; j < lines.length; ++j) { lines[j] = indent + lines[j]; } str = lines.join("\n"); ret += str + "\n"; } level--; return ret; }; function OperationalError(message) { if (!(this instanceof OperationalError)) return new OperationalError(message); notEnumerableProp(this, "name", "OperationalError"); notEnumerableProp(this, "message", message); this.cause = message; this["isOperational"] = true; if (message instanceof Error) { notEnumerableProp(this, "message", message.message); notEnumerableProp(this, "stack", message.stack); } else if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } } inherits(OperationalError, Error); var errorTypes = Error["__BluebirdErrorTypes__"]; if (!errorTypes) { errorTypes = Objectfreeze({ CancellationError: CancellationError, TimeoutError: TimeoutError, OperationalError: OperationalError, RejectionError: OperationalError, AggregateError: AggregateError }); es5.defineProperty(Error, "__BluebirdErrorTypes__", { value: errorTypes, writable: false, enumerable: false, configurable: false }); } module.exports = { Error: Error, TypeError: _TypeError, RangeError: _RangeError, CancellationError: errorTypes.CancellationError, OperationalError: errorTypes.OperationalError, TimeoutError: errorTypes.TimeoutError, AggregateError: errorTypes.AggregateError, Warning: Warning }; },{"./es5":10,"./util":21}],10:[function(_dereq_,module,exports){ var isES5 = (function(){ "use strict"; return this === undefined; })(); if (isES5) { module.exports = { freeze: Object.freeze, defineProperty: Object.defineProperty, getDescriptor: Object.getOwnPropertyDescriptor, keys: Object.keys, names: Object.getOwnPropertyNames, getPrototypeOf: Object.getPrototypeOf, isArray: Array.isArray, isES5: isES5, propertyIsWritable: function(obj, prop) { var descriptor = Object.getOwnPropertyDescriptor(obj, prop); return !!(!descriptor || descriptor.writable || descriptor.set); } }; } else { var has = {}.hasOwnProperty; var str = {}.toString; var proto = {}.constructor.prototype; var ObjectKeys = function (o) { var ret = []; for (var key in o) { if (has.call(o, key)) { ret.push(key); } } return ret; }; var ObjectGetDescriptor = function(o, key) { return {value: o[key]}; }; var ObjectDefineProperty = function (o, key, desc) { o[key] = desc.value; return o; }; var ObjectFreeze = function (obj) { return obj; }; var ObjectGetPrototypeOf = function (obj) { try { return Object(obj).constructor.prototype; } catch (e) { return proto; } }; var ArrayIsArray = function (obj) { try { return str.call(obj) === "[object Array]"; } catch(e) { return false; } }; module.exports = { isArray: ArrayIsArray, keys: ObjectKeys, names: ObjectKeys, defineProperty: ObjectDefineProperty, getDescriptor: ObjectGetDescriptor, freeze: ObjectFreeze, getPrototypeOf: ObjectGetPrototypeOf, isES5: isES5, propertyIsWritable: function() { return true; } }; } },{}],11:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) { var util = _dereq_("./util"); var CancellationError = Promise.CancellationError; var errorObj = util.errorObj; var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); function PassThroughHandlerContext(promise, type, handler) { this.promise = promise; this.type = type; this.handler = handler; this.called = false; this.cancelPromise = null; } PassThroughHandlerContext.prototype.isFinallyHandler = function() { return this.type === 0; }; function FinallyHandlerCancelReaction(finallyHandler) { this.finallyHandler = finallyHandler; } FinallyHandlerCancelReaction.prototype._resultCancelled = function() { checkCancel(this.finallyHandler); }; function checkCancel(ctx, reason) { if (ctx.cancelPromise != null) { if (arguments.length > 1) { ctx.cancelPromise._reject(reason); } else { ctx.cancelPromise._cancel(); } ctx.cancelPromise = null; return true; } return false; } function succeed() { return finallyHandler.call(this, this.promise._target()._settledValue()); } function fail(reason) { if (checkCancel(this, reason)) return; errorObj.e = reason; return errorObj; } function finallyHandler(reasonOrValue) { var promise = this.promise; var handler = this.handler; if (!this.called) { this.called = true; var ret = this.isFinallyHandler() ? handler.call(promise._boundValue()) : handler.call(promise._boundValue(), reasonOrValue); if (ret === NEXT_FILTER) { return ret; } else if (ret !== undefined) { promise._setReturnedNonUndefined(); var maybePromise = tryConvertToPromise(ret, promise); if (maybePromise instanceof Promise) { if (this.cancelPromise != null) { if (maybePromise._isCancelled()) { var reason = new CancellationError("late cancellation observer"); promise._attachExtraTrace(reason); errorObj.e = reason; return errorObj; } else if (maybePromise.isPending()) { maybePromise._attachCancellationCallback( new FinallyHandlerCancelReaction(this)); } } return maybePromise._then( succeed, fail, undefined, this, undefined); } } } if (promise.isRejected()) { checkCancel(this); errorObj.e = reasonOrValue; return errorObj; } else { checkCancel(this); return reasonOrValue; } } Promise.prototype._passThrough = function(handler, type, success, fail) { if (typeof handler !== "function") return this.then(); return this._then(success, fail, undefined, new PassThroughHandlerContext(this, type, handler), undefined); }; Promise.prototype.lastly = Promise.prototype["finally"] = function (handler) { return this._passThrough(handler, 0, finallyHandler, finallyHandler); }; Promise.prototype.tap = function (handler) { return this._passThrough(handler, 1, finallyHandler); }; Promise.prototype.tapCatch = function (handlerOrPredicate) { var len = arguments.length; if(len === 1) { return this._passThrough(handlerOrPredicate, 1, undefined, finallyHandler); } else { var catchInstances = new Array(len - 1), j = 0, i; for (i = 0; i < len - 1; ++i) { var item = arguments[i]; if (util.isObject(item)) { catchInstances[j++] = item; } else { return Promise.reject(new TypeError( "tapCatch statement predicate: " + "expecting an object but got " + util.classString(item) )); } } catchInstances.length = j; var handler = arguments[i]; return this._passThrough(catchFilter(catchInstances, handler, this), 1, undefined, finallyHandler); } }; return PassThroughHandlerContext; }; },{"./catch_filter":5,"./util":21}],12:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain) { var util = _dereq_("./util"); var canEvaluate = util.canEvaluate; var tryCatch = util.tryCatch; var errorObj = util.errorObj; var reject; if (!true) { if (canEvaluate) { var thenCallback = function(i) { return new Function("value", "holder", " \n\ 'use strict'; \n\ holder.pIndex = value; \n\ holder.checkFulfillment(this); \n\ ".replace(/Index/g, i)); }; var promiseSetter = function(i) { return new Function("promise", "holder", " \n\ 'use strict'; \n\ holder.pIndex = promise; \n\ ".replace(/Index/g, i)); }; var generateHolderClass = function(total) { var props = new Array(total); for (var i = 0; i < props.length; ++i) { props[i] = "this.p" + (i+1); } var assignment = props.join(" = ") + " = null;"; var cancellationCode= "var promise;\n" + props.map(function(prop) { return " \n\ promise = " + prop + "; \n\ if (promise instanceof Promise) { \n\ promise.cancel(); \n\ } \n\ "; }).join("\n"); var passedArguments = props.join(", "); var name = "Holder$" + total; var code = "return function(tryCatch, errorObj, Promise, async) { \n\ 'use strict'; \n\ function [TheName](fn) { \n\ [TheProperties] \n\ this.fn = fn; \n\ this.asyncNeeded = true; \n\ this.now = 0; \n\ } \n\ \n\ [TheName].prototype._callFunction = function(promise) { \n\ promise._pushContext(); \n\ var ret = tryCatch(this.fn)([ThePassedArguments]); \n\ promise._popContext(); \n\ if (ret === errorObj) { \n\ promise._rejectCallback(ret.e, false); \n\ } else { \n\ promise._resolveCallback(ret); \n\ } \n\ }; \n\ \n\ [TheName].prototype.checkFulfillment = function(promise) { \n\ var now = ++this.now; \n\ if (now === [TheTotal]) { \n\ if (this.asyncNeeded) { \n\ async.invoke(this._callFunction, this, promise); \n\ } else { \n\ this._callFunction(promise); \n\ } \n\ \n\ } \n\ }; \n\ \n\ [TheName].prototype._resultCancelled = function() { \n\ [CancellationCode] \n\ }; \n\ \n\ return [TheName]; \n\ }(tryCatch, errorObj, Promise, async); \n\ "; code = code.replace(/\[TheName\]/g, name) .replace(/\[TheTotal\]/g, total) .replace(/\[ThePassedArguments\]/g, passedArguments) .replace(/\[TheProperties\]/g, assignment) .replace(/\[CancellationCode\]/g, cancellationCode); return new Function("tryCatch", "errorObj", "Promise", "async", code) (tryCatch, errorObj, Promise, async); }; var holderClasses = []; var thenCallbacks = []; var promiseSetters = []; for (var i = 0; i < 8; ++i) { holderClasses.push(generateHolderClass(i + 1)); thenCallbacks.push(thenCallback(i + 1)); promiseSetters.push(promiseSetter(i + 1)); } reject = function (reason) { this._reject(reason); }; }} Promise.join = function () { var last = arguments.length - 1; var fn; if (last > 0 && typeof arguments[last] === "function") { fn = arguments[last]; if (!true) { if (last <= 8 && canEvaluate) { var ret = new Promise(INTERNAL); ret._captureStackTrace(); var HolderClass = holderClasses[last - 1]; var holder = new HolderClass(fn); var callbacks = thenCallbacks; for (var i = 0; i < last; ++i) { var maybePromise = tryConvertToPromise(arguments[i], ret); if (maybePromise instanceof Promise) { maybePromise = maybePromise._target(); var bitField = maybePromise._bitField; ; if (((bitField & 50397184) === 0)) { maybePromise._then(callbacks[i], reject, undefined, ret, holder); promiseSetters[i](maybePromise, holder); holder.asyncNeeded = false; } else if (((bitField & 33554432) !== 0)) { callbacks[i].call(ret, maybePromise._value(), holder); } else if (((bitField & 16777216) !== 0)) { ret._reject(maybePromise._reason()); } else { ret._cancel(); } } else { callbacks[i].call(ret, maybePromise, holder); } } if (!ret._isFateSealed()) { if (holder.asyncNeeded) { var domain = getDomain(); if (domain !== null) { holder.fn = util.domainBind(domain, holder.fn); } } ret._setAsyncGuaranteed(); ret._setOnCancel(holder); } return ret; } } } var args = [].slice.call(arguments);; if (fn) args.pop(); var ret = new PromiseArray(args).promise(); return fn !== undefined ? ret.spread(fn) : ret; }; }; },{"./util":21}],13:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { var util = _dereq_("./util"); var tryCatch = util.tryCatch; Promise.method = function (fn) { if (typeof fn !== "function") { throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); } return function () { var ret = new Promise(INTERNAL); ret._captureStackTrace(); ret._pushContext(); var value = tryCatch(fn).apply(this, arguments); var promiseCreated = ret._popContext(); debug.checkForgottenReturns( value, promiseCreated, "Promise.method", ret); ret._resolveFromSyncValue(value); return ret; }; }; Promise.attempt = Promise["try"] = function (fn) { if (typeof fn !== "function") { return apiRejection("expecting a function but got " + util.classString(fn)); } var ret = new Promise(INTERNAL); ret._captureStackTrace(); ret._pushContext(); var value; if (arguments.length > 1) { debug.deprecated("calling Promise.try with more than 1 argument"); var arg = arguments[1]; var ctx = arguments[2]; value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) : tryCatch(fn).call(ctx, arg); } else { value = tryCatch(fn)(); } var promiseCreated = ret._popContext(); debug.checkForgottenReturns( value, promiseCreated, "Promise.try", ret); ret._resolveFromSyncValue(value); return ret; }; Promise.prototype._resolveFromSyncValue = function (value) { if (value === util.errorObj) { this._rejectCallback(value.e, false); } else { this._resolveCallback(value, true); } }; }; },{"./util":21}],14:[function(_dereq_,module,exports){ "use strict"; var util = _dereq_("./util"); var maybeWrapAsError = util.maybeWrapAsError; var errors = _dereq_("./errors"); var OperationalError = errors.OperationalError; var es5 = _dereq_("./es5"); function isUntypedError(obj) { return obj instanceof Error && es5.getPrototypeOf(obj) === Error.prototype; } var rErrorKey = /^(?:name|message|stack|cause)$/; function wrapAsOperationalError(obj) { var ret; if (isUntypedError(obj)) { ret = new OperationalError(obj); ret.name = obj.name; ret.message = obj.message; ret.stack = obj.stack; var keys = es5.keys(obj); for (var i = 0; i < keys.length; ++i) { var key = keys[i]; if (!rErrorKey.test(key)) { ret[key] = obj[key]; } } return ret; } util.markAsOriginatingFromRejection(obj); return obj; } function nodebackForPromise(promise, multiArgs) { return function(err, value) { if (promise === null) return; if (err) { var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); promise._attachExtraTrace(wrapped); promise._reject(wrapped); } else if (!multiArgs) { promise._fulfill(value); } else { var args = [].slice.call(arguments, 1);; promise._fulfill(args); } promise = null; }; } module.exports = nodebackForPromise; },{"./errors":9,"./es5":10,"./util":21}],15:[function(_dereq_,module,exports){ "use strict"; module.exports = function() { var makeSelfResolutionError = function () { return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); }; var reflectHandler = function() { return new Promise.PromiseInspection(this._target()); }; var apiRejection = function(msg) { return Promise.reject(new TypeError(msg)); }; function Proxyable() {} var UNDEFINED_BINDING = {}; var util = _dereq_("./util"); var getDomain; if (util.isNode) { getDomain = function() { var ret = process.domain; if (ret === undefined) ret = null; return ret; }; } else { getDomain = function() { return null; }; } util.notEnumerableProp(Promise, "_getDomain", getDomain); var es5 = _dereq_("./es5"); var Async = _dereq_("./async"); var async = new Async(); es5.defineProperty(Promise, "_async", {value: async}); var errors = _dereq_("./errors"); var TypeError = Promise.TypeError = errors.TypeError; Promise.RangeError = errors.RangeError; var CancellationError = Promise.CancellationError = errors.CancellationError; Promise.TimeoutError = errors.TimeoutError; Promise.OperationalError = errors.OperationalError; Promise.RejectionError = errors.OperationalError; Promise.AggregateError = errors.AggregateError; var INTERNAL = function(){}; var APPLY = {}; var NEXT_FILTER = {}; var tryConvertToPromise = _dereq_("./thenables")(Promise, INTERNAL); var PromiseArray = _dereq_("./promise_array")(Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable); var Context = _dereq_("./context")(Promise); /*jshint unused:false*/ var createContext = Context.create; var debug = _dereq_("./debuggability")(Promise, Context); var CapturedTrace = debug.CapturedTrace; var PassThroughHandlerContext = _dereq_("./finally")(Promise, tryConvertToPromise, NEXT_FILTER); var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); var nodebackForPromise = _dereq_("./nodeback"); var errorObj = util.errorObj; var tryCatch = util.tryCatch; function check(self, executor) { if (self == null || self.constructor !== Promise) { throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); } if (typeof executor !== "function") { throw new TypeError("expecting a function but got " + util.classString(executor)); } } function Promise(executor) { if (executor !== INTERNAL) { check(this, executor); } this._bitField = 0; this._fulfillmentHandler0 = undefined; this._rejectionHandler0 = undefined; this._promise0 = undefined; this._receiver0 = undefined; this._resolveFromExecutor(executor); this._promiseCreated(); this._fireEvent("promiseCreated", this); } Promise.prototype.toString = function () { return "[object Promise]"; }; Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { var len = arguments.length; if (len > 1) { var catchInstances = new Array(len - 1), j = 0, i; for (i = 0; i < len - 1; ++i) { var item = arguments[i]; if (util.isObject(item)) { catchInstances[j++] = item; } else { return apiRejection("Catch statement predicate: " + "expecting an object but got " + util.classString(item)); } } catchInstances.length = j; fn = arguments[i]; return this.then(undefined, catchFilter(catchInstances, fn, this)); } return this.then(undefined, fn); }; Promise.prototype.reflect = function () { return this._then(reflectHandler, reflectHandler, undefined, this, undefined); }; Promise.prototype.then = function (didFulfill, didReject) { if (debug.warnings() && arguments.length > 0 && typeof didFulfill !== "function" && typeof didReject !== "function") { var msg = ".then() only accepts functions but was passed: " + util.classString(didFulfill); if (arguments.length > 1) { msg += ", " + util.classString(didReject); } this._warn(msg); } return this._then(didFulfill, didReject, undefined, undefined, undefined); }; Promise.prototype.done = function (didFulfill, didReject) { var promise = this._then(didFulfill, didReject, undefined, undefined, undefined); promise._setIsFinal(); }; Promise.prototype.spread = function (fn) { if (typeof fn !== "function") { return apiRejection("expecting a function but got " + util.classString(fn)); } return this.all()._then(fn, undefined, undefined, APPLY, undefined); }; Promise.prototype.toJSON = function () { var ret = { isFulfilled: false, isRejected: false, fulfillmentValue: undefined, rejectionReason: undefined }; if (this.isFulfilled()) { ret.fulfillmentValue = this.value(); ret.isFulfilled = true; } else if (this.isRejected()) { ret.rejectionReason = this.reason(); ret.isRejected = true; } return ret; }; Promise.prototype.all = function () { if (arguments.length > 0) { this._warn(".all() was passed arguments but it does not take any"); } return new PromiseArray(this).promise(); }; Promise.prototype.error = function (fn) { return this.caught(util.originatesFromRejection, fn); }; Promise.getNewLibraryCopy = module.exports; Promise.is = function (val) { return val instanceof Promise; }; Promise.fromNode = Promise.fromCallback = function(fn) { var ret = new Promise(INTERNAL); ret._captureStackTrace(); var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : false; var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); if (result === errorObj) { ret._rejectCallback(result.e, true); } if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); return ret; }; Promise.all = function (promises) { return new PromiseArray(promises).promise(); }; Promise.cast = function (obj) { var ret = tryConvertToPromise(obj); if (!(ret instanceof Promise)) { ret = new Promise(INTERNAL); ret._captureStackTrace(); ret._setFulfilled(); ret._rejectionHandler0 = obj; } return ret; }; Promise.resolve = Promise.fulfilled = Promise.cast; Promise.reject = Promise.rejected = function (reason) { var ret = new Promise(INTERNAL); ret._captureStackTrace(); ret._rejectCallback(reason, true); return ret; }; Promise.setScheduler = function(fn) { if (typeof fn !== "function") { throw new TypeError("expecting a function but got " + util.classString(fn)); } return async.setScheduler(fn); }; Promise.prototype._then = function ( didFulfill, didReject, _, receiver, internalData ) { var haveInternalData = internalData !== undefined; var promise = haveInternalData ? internalData : new Promise(INTERNAL); var target = this._target(); var bitField = target._bitField; if (!haveInternalData) { promise._propagateFrom(this, 3); promise._captureStackTrace(); if (receiver === undefined && ((this._bitField & 2097152) !== 0)) { if (!((bitField & 50397184) === 0)) { receiver = this._boundValue(); } else { receiver = target === this ? undefined : this._boundTo; } } this._fireEvent("promiseChained", this, promise); } var domain = getDomain(); if (!((bitField & 50397184) === 0)) { var handler, value, settler = target._settlePromiseCtx; if (((bitField & 33554432) !== 0)) { value = target._rejectionHandler0; handler = didFulfill; } else if (((bitField & 16777216) !== 0)) { value = target._fulfillmentHandler0; handler = didReject; target._unsetRejectionIsUnhandled(); } else { settler = target._settlePromiseLateCancellationObserver; value = new CancellationError("late cancellation observer"); target._attachExtraTrace(value); handler = didReject; } async.invoke(settler, target, { handler: domain === null ? handler : (typeof handler === "function" && util.domainBind(domain, handler)), promise: promise, receiver: receiver, value: value }); } else { target._addCallbacks(didFulfill, didReject, promise, receiver, domain); } return promise; }; Promise.prototype._length = function () { return this._bitField & 65535; }; Promise.prototype._isFateSealed = function () { return (this._bitField & 117506048) !== 0; }; Promise.prototype._isFollowing = function () { return (this._bitField & 67108864) === 67108864; }; Promise.prototype._setLength = function (len) { this._bitField = (this._bitField & -65536) | (len & 65535); }; Promise.prototype._setFulfilled = function () { this._bitField = this._bitField | 33554432; this._fireEvent("promiseFulfilled", this); }; Promise.prototype._setRejected = function () { this._bitField = this._bitField | 16777216; this._fireEvent("promiseRejected", this); }; Promise.prototype._setFollowing = function () { this._bitField = this._bitField | 67108864; this._fireEvent("promiseResolved", this); }; Promise.prototype._setIsFinal = function () { this._bitField = this._bitField | 4194304; }; Promise.prototype._isFinal = function () { return (this._bitField & 4194304) > 0; }; Promise.prototype._unsetCancelled = function() { this._bitField = this._bitField & (~65536); }; Promise.prototype._setCancelled = function() { this._bitField = this._bitField | 65536; this._fireEvent("promiseCancelled", this); }; Promise.prototype._setWillBeCancelled = function() { this._bitField = this._bitField | 8388608; }; Promise.prototype._setAsyncGuaranteed = function() { if (async.hasCustomScheduler()) return; this._bitField = this._bitField | 134217728; }; Promise.prototype._receiverAt = function (index) { var ret = index === 0 ? this._receiver0 : this[ index * 4 - 4 + 3]; if (ret === UNDEFINED_BINDING) { return undefined; } else if (ret === undefined && this._isBound()) { return this._boundValue(); } return ret; }; Promise.prototype._promiseAt = function (index) { return this[ index * 4 - 4 + 2]; }; Promise.prototype._fulfillmentHandlerAt = function (index) { return this[ index * 4 - 4 + 0]; }; Promise.prototype._rejectionHandlerAt = function (index) { return this[ index * 4 - 4 + 1]; }; Promise.prototype._boundValue = function() {}; Promise.prototype._migrateCallback0 = function (follower) { var bitField = follower._bitField; var fulfill = follower._fulfillmentHandler0; var reject = follower._rejectionHandler0; var promise = follower._promise0; var receiver = follower._receiverAt(0); if (receiver === undefined) receiver = UNDEFINED_BINDING; this._addCallbacks(fulfill, reject, promise, receiver, null); }; Promise.prototype._migrateCallbackAt = function (follower, index) { var fulfill = follower._fulfillmentHandlerAt(index); var reject = follower._rejectionHandlerAt(index); var promise = follower._promiseAt(index); var receiver = follower._receiverAt(index); if (receiver === undefined) receiver = UNDEFINED_BINDING; this._addCallbacks(fulfill, reject, promise, receiver, null); }; Promise.prototype._addCallbacks = function ( fulfill, reject, promise, receiver, domain ) { var index = this._length(); if (index >= 65535 - 4) { index = 0; this._setLength(0); } if (index === 0) { this._promise0 = promise; this._receiver0 = receiver; if (typeof fulfill === "function") { this._fulfillmentHandler0 = domain === null ? fulfill : util.domainBind(domain, fulfill); } if (typeof reject === "function") { this._rejectionHandler0 = domain === null ? reject : util.domainBind(domain, reject); } } else { var base = index * 4 - 4; this[base + 2] = promise; this[base + 3] = receiver; if (typeof fulfill === "function") { this[base + 0] = domain === null ? fulfill : util.domainBind(domain, fulfill); } if (typeof reject === "function") { this[base + 1] = domain === null ? reject : util.domainBind(domain, reject); } } this._setLength(index + 1); return index; }; Promise.prototype._proxy = function (proxyable, arg) { this._addCallbacks(undefined, undefined, arg, proxyable, null); }; Promise.prototype._resolveCallback = function(value, shouldBind) { if (((this._bitField & 117506048) !== 0)) return; if (value === this) return this._rejectCallback(makeSelfResolutionError(), false); var maybePromise = tryConvertToPromise(value, this); if (!(maybePromise instanceof Promise)) return this._fulfill(value); if (shouldBind) this._propagateFrom(maybePromise, 2); var promise = maybePromise._target(); if (promise === this) { this._reject(makeSelfResolutionError()); return; } var bitField = promise._bitField; if (((bitField & 50397184) === 0)) { var len = this._length(); if (len > 0) promise._migrateCallback0(this); for (var i = 1; i < len; ++i) { promise._migrateCallbackAt(this, i); } this._setFollowing(); this._setLength(0); this._setFollowee(promise); } else if (((bitField & 33554432) !== 0)) { this._fulfill(promise._value()); } else if (((bitField & 16777216) !== 0)) { this._reject(promise._reason()); } else { var reason = new CancellationError("late cancellation observer"); promise._attachExtraTrace(reason); this._reject(reason); } }; Promise.prototype._rejectCallback = function(reason, synchronous, ignoreNonErrorWarnings) { var trace = util.ensureErrorObject(reason); var hasStack = trace === reason; if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { var message = "a promise was rejected with a non-error: " + util.classString(reason); this._warn(message, true); } this._attachExtraTrace(trace, synchronous ? hasStack : false); this._reject(reason); }; Promise.prototype._resolveFromExecutor = function (executor) { if (executor === INTERNAL) return; var promise = this; this._captureStackTrace(); this._pushContext(); var synchronous = true; var r = this._execute(executor, function(value) { promise._resolveCallback(value); }, function (reason) { promise._rejectCallback(reason, synchronous); }); synchronous = false; this._popContext(); if (r !== undefined) { promise._rejectCallback(r, true); } }; Promise.prototype._settlePromiseFromHandler = function ( handler, receiver, value, promise ) { var bitField = promise._bitField; if (((bitField & 65536) !== 0)) return; promise._pushContext(); var x; if (receiver === APPLY) { if (!value || typeof value.length !== "number") { x = errorObj; x.e = new TypeError("cannot .spread() a non-array: " + util.classString(value)); } else { x = tryCatch(handler).apply(this._boundValue(), value); } } else { x = tryCatch(handler).call(receiver, value); } var promiseCreated = promise._popContext(); bitField = promise._bitField; if (((bitField & 65536) !== 0)) return; if (x === NEXT_FILTER) { promise._reject(value); } else if (x === errorObj) { promise._rejectCallback(x.e, false); } else { debug.checkForgottenReturns(x, promiseCreated, "", promise, this); promise._resolveCallback(x); } }; Promise.prototype._target = function() { var ret = this; while (ret._isFollowing()) ret = ret._followee(); return ret; }; Promise.prototype._followee = function() { return this._rejectionHandler0; }; Promise.prototype._setFollowee = function(promise) { this._rejectionHandler0 = promise; }; Promise.prototype._settlePromise = function(promise, handler, receiver, value) { var isPromise = promise instanceof Promise; var bitField = this._bitField; var asyncGuaranteed = ((bitField & 134217728) !== 0); if (((bitField & 65536) !== 0)) { if (isPromise) promise._invokeInternalOnCancel(); if (receiver instanceof PassThroughHandlerContext && receiver.isFinallyHandler()) { receiver.cancelPromise = promise; if (tryCatch(handler).call(receiver, value) === errorObj) { promise._reject(errorObj.e); } } else if (handler === reflectHandler) { promise._fulfill(reflectHandler.call(receiver)); } else if (receiver instanceof Proxyable) { receiver._promiseCancelled(promise); } else if (isPromise || promise instanceof PromiseArray) { promise._cancel(); } else { receiver.cancel(); } } else if (typeof handler === "function") { if (!isPromise) { handler.call(receiver, value, promise); } else { if (asyncGuaranteed) promise._setAsyncGuaranteed(); this._settlePromiseFromHandler(handler, receiver, value, promise); } } else if (receiver instanceof Proxyable) { if (!receiver._isResolved()) { if (((bitField & 33554432) !== 0)) { receiver._promiseFulfilled(value, promise); } else { receiver._promiseRejected(value, promise); } } } else if (isPromise) { if (asyncGuaranteed) promise._setAsyncGuaranteed(); if (((bitField & 33554432) !== 0)) { promise._fulfill(value); } else { promise._reject(value); } } }; Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { var handler = ctx.handler; var promise = ctx.promise; var receiver = ctx.receiver; var value = ctx.value; if (typeof handler === "function") { if (!(promise instanceof Promise)) { handler.call(receiver, value, promise); } else { this._settlePromiseFromHandler(handler, receiver, value, promise); } } else if (promise instanceof Promise) { promise._reject(value); } }; Promise.prototype._settlePromiseCtx = function(ctx) { this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); }; Promise.prototype._settlePromise0 = function(handler, value, bitField) { var promise = this._promise0; var receiver = this._receiverAt(0); this._promise0 = undefined; this._receiver0 = undefined; this._settlePromise(promise, handler, receiver, value); }; Promise.prototype._clearCallbackDataAtIndex = function(index) { var base = index * 4 - 4; this[base + 2] = this[base + 3] = this[base + 0] = this[base + 1] = undefined; }; Promise.prototype._fulfill = function (value) { var bitField = this._bitField; if (((bitField & 117506048) >>> 16)) return; if (value === this) { var err = makeSelfResolutionError(); this._attachExtraTrace(err); return this._reject(err); } this._setFulfilled(); this._rejectionHandler0 = value; if ((bitField & 65535) > 0) { if (((bitField & 134217728) !== 0)) { this._settlePromises(); } else { async.settlePromises(this); } } }; Promise.prototype._reject = function (reason) { var bitField = this._bitField; if (((bitField & 117506048) >>> 16)) return; this._setRejected(); this._fulfillmentHandler0 = reason; if (this._isFinal()) { return async.fatalError(reason, util.isNode); } if ((bitField & 65535) > 0) { async.settlePromises(this); } else { this._ensurePossibleRejectionHandled(); } }; Promise.prototype._fulfillPromises = function (len, value) { for (var i = 1; i < len; i++) { var handler = this._fulfillmentHandlerAt(i); var promise = this._promiseAt(i); var receiver = this._receiverAt(i); this._clearCallbackDataAtIndex(i); this._settlePromise(promise, handler, receiver, value); } }; Promise.prototype._rejectPromises = function (len, reason) { for (var i = 1; i < len; i++) { var handler = this._rejectionHandlerAt(i); var promise = this._promiseAt(i); var receiver = this._receiverAt(i); this._clearCallbackDataAtIndex(i); this._settlePromise(promise, handler, receiver, reason); } }; Promise.prototype._settlePromises = function () { var bitField = this._bitField; var len = (bitField & 65535); if (len > 0) { if (((bitField & 16842752) !== 0)) { var reason = this._fulfillmentHandler0; this._settlePromise0(this._rejectionHandler0, reason, bitField); this._rejectPromises(len, reason); } else { var value = this._rejectionHandler0; this._settlePromise0(this._fulfillmentHandler0, value, bitField); this._fulfillPromises(len, value); } this._setLength(0); } this._clearCancellationData(); }; Promise.prototype._settledValue = function() { var bitField = this._bitField; if (((bitField & 33554432) !== 0)) { return this._rejectionHandler0; } else if (((bitField & 16777216) !== 0)) { return this._fulfillmentHandler0; } }; function deferResolve(v) {this.promise._resolveCallback(v);} function deferReject(v) {this.promise._rejectCallback(v, false);} Promise.defer = Promise.pending = function() { debug.deprecated("Promise.defer", "new Promise"); var promise = new Promise(INTERNAL); return { promise: promise, resolve: deferResolve, reject: deferReject }; }; util.notEnumerableProp(Promise, "_makeSelfResolutionError", makeSelfResolutionError); _dereq_("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug); _dereq_("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); _dereq_("./cancel")(Promise, PromiseArray, apiRejection, debug); _dereq_("./direct_resolve")(Promise); _dereq_("./synchronous_inspection")(Promise); _dereq_("./join")( Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain); Promise.Promise = Promise; Promise.version = "3.5.1"; util.toFastProperties(Promise); util.toFastProperties(Promise.prototype); function fillTypes(value) { var p = new Promise(INTERNAL); p._fulfillmentHandler0 = value; p._rejectionHandler0 = value; p._promise0 = value; p._receiver0 = value; } // Complete slack tracking, opt out of field-type tracking and // stabilize map fillTypes({a: 1}); fillTypes({b: 2}); fillTypes({c: 3}); fillTypes(1); fillTypes(function(){}); fillTypes(undefined); fillTypes(false); fillTypes(new Promise(INTERNAL)); debug.setBounds(Async.firstLineError, util.lastLineError); return Promise; }; },{"./async":1,"./bind":2,"./cancel":4,"./catch_filter":5,"./context":6,"./debuggability":7,"./direct_resolve":8,"./errors":9,"./es5":10,"./finally":11,"./join":12,"./method":13,"./nodeback":14,"./promise_array":16,"./synchronous_inspection":19,"./thenables":20,"./util":21}],16:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable) { var util = _dereq_("./util"); var isArray = util.isArray; function toResolutionValue(val) { switch(val) { case -2: return []; case -3: return {}; case -6: return new Map(); } } function PromiseArray(values) { var promise = this._promise = new Promise(INTERNAL); if (values instanceof Promise) { promise._propagateFrom(values, 3); } promise._setOnCancel(this); this._values = values; this._length = 0; this._totalResolved = 0; this._init(undefined, -2); } util.inherits(PromiseArray, Proxyable); PromiseArray.prototype.length = function () { return this._length; }; PromiseArray.prototype.promise = function () { return this._promise; }; PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { var values = tryConvertToPromise(this._values, this._promise); if (values instanceof Promise) { values = values._target(); var bitField = values._bitField; ; this._values = values; if (((bitField & 50397184) === 0)) { this._promise._setAsyncGuaranteed(); return values._then( init, this._reject, undefined, this, resolveValueIfEmpty ); } else if (((bitField & 33554432) !== 0)) { values = values._value(); } else if (((bitField & 16777216) !== 0)) { return this._reject(values._reason()); } else { return this._cancel(); } } values = util.asArray(values); if (values === null) { var err = apiRejection( "expecting an array or an iterable object but got " + util.classString(values)).reason(); this._promise._rejectCallback(err, false); return; } if (values.length === 0) { if (resolveValueIfEmpty === -5) { this._resolveEmptyArray(); } else { this._resolve(toResolutionValue(resolveValueIfEmpty)); } return; } this._iterate(values); }; PromiseArray.prototype._iterate = function(values) { var len = this.getActualLength(values.length); this._length = len; this._values = this.shouldCopyValues() ? new Array(len) : this._values; var result = this._promise; var isResolved = false; var bitField = null; for (var i = 0; i < len; ++i) { var maybePromise = tryConvertToPromise(values[i], result); if (maybePromise instanceof Promise) { maybePromise = maybePromise._target(); bitField = maybePromise._bitField; } else { bitField = null; } if (isResolved) { if (bitField !== null) { maybePromise.suppressUnhandledRejections(); } } else if (bitField !== null) { if (((bitField & 50397184) === 0)) { maybePromise._proxy(this, i); this._values[i] = maybePromise; } else if (((bitField & 33554432) !== 0)) { isResolved = this._promiseFulfilled(maybePromise._value(), i); } else if (((bitField & 16777216) !== 0)) { isResolved = this._promiseRejected(maybePromise._reason(), i); } else { isResolved = this._promiseCancelled(i); } } else { isResolved = this._promiseFulfilled(maybePromise, i); } } if (!isResolved) result._setAsyncGuaranteed(); }; PromiseArray.prototype._isResolved = function () { return this._values === null; }; PromiseArray.prototype._resolve = function (value) { this._values = null; this._promise._fulfill(value); }; PromiseArray.prototype._cancel = function() { if (this._isResolved() || !this._promise._isCancellable()) return; this._values = null; this._promise._cancel(); }; PromiseArray.prototype._reject = function (reason) { this._values = null; this._promise._rejectCallback(reason, false); }; PromiseArray.prototype._promiseFulfilled = function (value, index) { this._values[index] = value; var totalResolved = ++this._totalResolved; if (totalResolved >= this._length) { this._resolve(this._values); return true; } return false; }; PromiseArray.prototype._promiseCancelled = function() { this._cancel(); return true; }; PromiseArray.prototype._promiseRejected = function (reason) { this._totalResolved++; this._reject(reason); return true; }; PromiseArray.prototype._resultCancelled = function() { if (this._isResolved()) return; var values = this._values; this._cancel(); if (values instanceof Promise) { values.cancel(); } else { for (var i = 0; i < values.length; ++i) { if (values[i] instanceof Promise) { values[i].cancel(); } } } }; PromiseArray.prototype.shouldCopyValues = function () { return true; }; PromiseArray.prototype.getActualLength = function (len) { return len; }; return PromiseArray; }; },{"./util":21}],17:[function(_dereq_,module,exports){ "use strict"; function arrayMove(src, srcIndex, dst, dstIndex, len) { for (var j = 0; j < len; ++j) { dst[j + dstIndex] = src[j + srcIndex]; src[j + srcIndex] = void 0; } } function Queue(capacity) { this._capacity = capacity; this._length = 0; this._front = 0; } Queue.prototype._willBeOverCapacity = function (size) { return this._capacity < size; }; Queue.prototype._pushOne = function (arg) { var length = this.length(); this._checkCapacity(length + 1); var i = (this._front + length) & (this._capacity - 1); this[i] = arg; this._length = length + 1; }; Queue.prototype.push = function (fn, receiver, arg) { var length = this.length() + 3; if (this._willBeOverCapacity(length)) { this._pushOne(fn); this._pushOne(receiver); this._pushOne(arg); return; } var j = this._front + length - 3; this._checkCapacity(length); var wrapMask = this._capacity - 1; this[(j + 0) & wrapMask] = fn; this[(j + 1) & wrapMask] = receiver; this[(j + 2) & wrapMask] = arg; this._length = length; }; Queue.prototype.shift = function () { var front = this._front, ret = this[front]; this[front] = undefined; this._front = (front + 1) & (this._capacity - 1); this._length--; return ret; }; Queue.prototype.length = function () { return this._length; }; Queue.prototype._checkCapacity = function (size) { if (this._capacity < size) { this._resizeTo(this._capacity << 1); } }; Queue.prototype._resizeTo = function (capacity) { var oldCapacity = this._capacity; this._capacity = capacity; var front = this._front; var length = this._length; var moveItemsCount = (front + length) & (oldCapacity - 1); arrayMove(this, 0, this, oldCapacity, moveItemsCount); }; module.exports = Queue; },{}],18:[function(_dereq_,module,exports){ "use strict"; var util = _dereq_("./util"); var schedule; var noAsyncScheduler = function() { throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); }; var NativePromise = util.getNativePromise(); if (util.isNode && typeof MutationObserver === "undefined") { var GlobalSetImmediate = global.setImmediate; var ProcessNextTick = process.nextTick; schedule = util.isRecentNode ? function(fn) { GlobalSetImmediate.call(global, fn); } : function(fn) { ProcessNextTick.call(process, fn); }; } else if (typeof NativePromise === "function" && typeof NativePromise.resolve === "function") { var nativePromise = NativePromise.resolve(); schedule = function(fn) { nativePromise.then(fn); }; } else if ((typeof MutationObserver !== "undefined") && !(typeof window !== "undefined" && window.navigator && (window.navigator.standalone || window.cordova))) { schedule = (function() { var div = document.createElement("div"); var opts = {attributes: true}; var toggleScheduled = false; var div2 = document.createElement("div"); var o2 = new MutationObserver(function() { div.classList.toggle("foo"); toggleScheduled = false; }); o2.observe(div2, opts); var scheduleToggle = function() { if (toggleScheduled) return; toggleScheduled = true; div2.classList.toggle("foo"); }; return function schedule(fn) { var o = new MutationObserver(function() { o.disconnect(); fn(); }); o.observe(div, opts); scheduleToggle(); }; })(); } else if (typeof setImmediate !== "undefined") { schedule = function (fn) { setImmediate(fn); }; } else if (typeof setTimeout !== "undefined") { schedule = function (fn) { setTimeout(fn, 0); }; } else { schedule = noAsyncScheduler; } module.exports = schedule; },{"./util":21}],19:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise) { function PromiseInspection(promise) { if (promise !== undefined) { promise = promise._target(); this._bitField = promise._bitField; this._settledValueField = promise._isFateSealed() ? promise._settledValue() : undefined; } else { this._bitField = 0; this._settledValueField = undefined; } } PromiseInspection.prototype._settledValue = function() { return this._settledValueField; }; var value = PromiseInspection.prototype.value = function () { if (!this.isFulfilled()) { throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); } return this._settledValue(); }; var reason = PromiseInspection.prototype.error = PromiseInspection.prototype.reason = function () { if (!this.isRejected()) { throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); } return this._settledValue(); }; var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { return (this._bitField & 33554432) !== 0; }; var isRejected = PromiseInspection.prototype.isRejected = function () { return (this._bitField & 16777216) !== 0; }; var isPending = PromiseInspection.prototype.isPending = function () { return (this._bitField & 50397184) === 0; }; var isResolved = PromiseInspection.prototype.isResolved = function () { return (this._bitField & 50331648) !== 0; }; PromiseInspection.prototype.isCancelled = function() { return (this._bitField & 8454144) !== 0; }; Promise.prototype.__isCancelled = function() { return (this._bitField & 65536) === 65536; }; Promise.prototype._isCancelled = function() { return this._target().__isCancelled(); }; Promise.prototype.isCancelled = function() { return (this._target()._bitField & 8454144) !== 0; }; Promise.prototype.isPending = function() { return isPending.call(this._target()); }; Promise.prototype.isRejected = function() { return isRejected.call(this._target()); }; Promise.prototype.isFulfilled = function() { return isFulfilled.call(this._target()); }; Promise.prototype.isResolved = function() { return isResolved.call(this._target()); }; Promise.prototype.value = function() { return value.call(this._target()); }; Promise.prototype.reason = function() { var target = this._target(); target._unsetRejectionIsUnhandled(); return reason.call(target); }; Promise.prototype._value = function() { return this._settledValue(); }; Promise.prototype._reason = function() { this._unsetRejectionIsUnhandled(); return this._settledValue(); }; Promise.PromiseInspection = PromiseInspection; }; },{}],20:[function(_dereq_,module,exports){ "use strict"; module.exports = function(Promise, INTERNAL) { var util = _dereq_("./util"); var errorObj = util.errorObj; var isObject = util.isObject; function tryConvertToPromise(obj, context) { if (isObject(obj)) { if (obj instanceof Promise) return obj; var then = getThen(obj); if (then === errorObj) { if (context) context._pushContext(); var ret = Promise.reject(then.e); if (context) context._popContext(); return ret; } else if (typeof then === "function") { if (isAnyBluebirdPromise(obj)) { var ret = new Promise(INTERNAL); obj._then( ret._fulfill, ret._reject, undefined, ret, null ); return ret; } return doThenable(obj, then, context); } } return obj; } function doGetThen(obj) { return obj.then; } function getThen(obj) { try { return doGetThen(obj); } catch (e) { errorObj.e = e; return errorObj; } } var hasProp = {}.hasOwnProperty; function isAnyBluebirdPromise(obj) { try { return hasProp.call(obj, "_promise0"); } catch (e) { return false; } } function doThenable(x, then, context) { var promise = new Promise(INTERNAL); var ret = promise; if (context) context._pushContext(); promise._captureStackTrace(); if (context) context._popContext(); var synchronous = true; var result = util.tryCatch(then).call(x, resolve, reject); synchronous = false; if (promise && result === errorObj) { promise._rejectCallback(result.e, true, true); promise = null; } function resolve(value) { if (!promise) return; promise._resolveCallback(value); promise = null; } function reject(reason) { if (!promise) return; promise._rejectCallback(reason, synchronous, true); promise = null; } return ret; } return tryConvertToPromise; }; },{"./util":21}],21:[function(_dereq_,module,exports){ "use strict"; var es5 = _dereq_("./es5"); var canEvaluate = typeof navigator == "undefined"; var errorObj = {e: {}}; var tryCatchTarget; var globalObject = typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : this !== undefined ? this : null; function tryCatcher() { try { var target = tryCatchTarget; tryCatchTarget = null; return target.apply(this, arguments); } catch (e) { errorObj.e = e; return errorObj; } } function tryCatch(fn) { tryCatchTarget = fn; return tryCatcher; } var inherits = function(Child, Parent) { var hasProp = {}.hasOwnProperty; function T() { this.constructor = Child; this.constructor$ = Parent; for (var propertyName in Parent.prototype) { if (hasProp.call(Parent.prototype, propertyName) && propertyName.charAt(propertyName.length-1) !== "$" ) { this[propertyName + "$"] = Parent.prototype[propertyName]; } } } T.prototype = Parent.prototype; Child.prototype = new T(); return Child.prototype; }; function isPrimitive(val) { return val == null || val === true || val === false || typeof val === "string" || typeof val === "number"; } function isObject(value) { return typeof value === "function" || typeof value === "object" && value !== null; } function maybeWrapAsError(maybeError) { if (!isPrimitive(maybeError)) return maybeError; return new Error(safeToString(maybeError)); } function withAppended(target, appendee) { var len = target.length; var ret = new Array(len + 1); var i; for (i = 0; i < len; ++i) { ret[i] = target[i]; } ret[i] = appendee; return ret; } function getDataPropertyOrDefault(obj, key, defaultValue) { if (es5.isES5) { var desc = Object.getOwnPropertyDescriptor(obj, key); if (desc != null) { return desc.get == null && desc.set == null ? desc.value : defaultValue; } } else { return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; } } function notEnumerableProp(obj, name, value) { if (isPrimitive(obj)) return obj; var descriptor = { value: value, configurable: true, enumerable: false, writable: true }; es5.defineProperty(obj, name, descriptor); return obj; } function thrower(r) { throw r; } var inheritedDataKeys = (function() { var excludedPrototypes = [ Array.prototype, Object.prototype, Function.prototype ]; var isExcludedProto = function(val) { for (var i = 0; i < excludedPrototypes.length; ++i) { if (excludedPrototypes[i] === val) { return true; } } return false; }; if (es5.isES5) { var getKeys = Object.getOwnPropertyNames; return function(obj) { var ret = []; var visitedKeys = Object.create(null); while (obj != null && !isExcludedProto(obj)) { var keys; try { keys = getKeys(obj); } catch (e) { return ret; } for (var i = 0; i < keys.length; ++i) { var key = keys[i]; if (visitedKeys[key]) continue; visitedKeys[key] = true; var desc = Object.getOwnPropertyDescriptor(obj, key); if (desc != null && desc.get == null && desc.set == null) { ret.push(key); } } obj = es5.getPrototypeOf(obj); } return ret; }; } else { var hasProp = {}.hasOwnProperty; return function(obj) { if (isExcludedProto(obj)) return []; var ret = []; /*jshint forin:false */ enumeration: for (var key in obj) { if (hasProp.call(obj, key)) { ret.push(key); } else { for (var i = 0; i < excludedPrototypes.length; ++i) { if (hasProp.call(excludedPrototypes[i], key)) { continue enumeration; } } ret.push(key); } } return ret; }; } })(); var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; function isClass(fn) { try { if (typeof fn === "function") { var keys = es5.names(fn.prototype); var hasMethods = es5.isES5 && keys.length > 1; var hasMethodsOtherThanConstructor = keys.length > 0 && !(keys.length === 1 && keys[0] === "constructor"); var hasThisAssignmentAndStaticMethods = thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; if (hasMethods || hasMethodsOtherThanConstructor || hasThisAssignmentAndStaticMethods) { return true; } } return false; } catch (e) { return false; } } function toFastProperties(obj) { /*jshint -W027,-W055,-W031*/ function FakeConstructor() {} FakeConstructor.prototype = obj; var l = 8; while (l--) new FakeConstructor(); return obj; eval(obj); } var rident = /^[a-z$_][a-z$_0-9]*$/i; function isIdentifier(str) { return rident.test(str); } function filledRange(count, prefix, suffix) { var ret = new Array(count); for(var i = 0; i < count; ++i) { ret[i] = prefix + i + suffix; } return ret; } function safeToString(obj) { try { return obj + ""; } catch (e) { return "[no string representation]"; } } function isError(obj) { return obj instanceof Error || (obj !== null && typeof obj === "object" && typeof obj.message === "string" && typeof obj.name === "string"); } function markAsOriginatingFromRejection(e) { try { notEnumerableProp(e, "isOperational", true); } catch(ignore) {} } function originatesFromRejection(e) { if (e == null) return false; return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || e["isOperational"] === true); } function canAttachTrace(obj) { return isError(obj) && es5.propertyIsWritable(obj, "stack"); } var ensureErrorObject = (function() { if (!("stack" in new Error())) { return function(value) { if (canAttachTrace(value)) return value; try {throw new Error(safeToString(value));} catch(err) {return err;} }; } else { return function(value) { if (canAttachTrace(value)) return value; return new Error(safeToString(value)); }; } })(); function classString(obj) { return {}.toString.call(obj); } function copyDescriptors(from, to, filter) { var keys = es5.names(from); for (var i = 0; i < keys.length; ++i) { var key = keys[i]; if (filter(key)) { try { es5.defineProperty(to, key, es5.getDescriptor(from, key)); } catch (ignore) {} } } } var asArray = function(v) { if (es5.isArray(v)) { return v; } return null; }; if (typeof Symbol !== "undefined" && Symbol.iterator) { var ArrayFrom = typeof Array.from === "function" ? function(v) { return Array.from(v); } : function(v) { var ret = []; var it = v[Symbol.iterator](); var itResult; while (!((itResult = it.next()).done)) { ret.push(itResult.value); } return ret; }; asArray = function(v) { if (es5.isArray(v)) { return v; } else if (v != null && typeof v[Symbol.iterator] === "function") { return ArrayFrom(v); } return null; }; } var isNode = typeof process !== "undefined" && classString(process).toLowerCase() === "[object process]"; var hasEnvVariables = typeof process !== "undefined" && typeof process.env !== "undefined"; function env(key) { return hasEnvVariables ? process.env[key] : undefined; } function getNativePromise() { if (typeof Promise === "function") { try { var promise = new Promise(function(){}); if ({}.toString.call(promise) === "[object Promise]") { return Promise; } } catch (e) {} } } function domainBind(self, cb) { return self.bind(cb); } var ret = { isClass: isClass, isIdentifier: isIdentifier, inheritedDataKeys: inheritedDataKeys, getDataPropertyOrDefault: getDataPropertyOrDefault, thrower: thrower, isArray: es5.isArray, asArray: asArray, notEnumerableProp: notEnumerableProp, isPrimitive: isPrimitive, isObject: isObject, isError: isError, canEvaluate: canEvaluate, errorObj: errorObj, tryCatch: tryCatch, inherits: inherits, withAppended: withAppended, maybeWrapAsError: maybeWrapAsError, toFastProperties: toFastProperties, filledRange: filledRange, toString: safeToString, canAttachTrace: canAttachTrace, ensureErrorObject: ensureErrorObject, originatesFromRejection: originatesFromRejection, markAsOriginatingFromRejection: markAsOriginatingFromRejection, classString: classString, copyDescriptors: copyDescriptors, hasDevTools: typeof chrome !== "undefined" && chrome && typeof chrome.loadTimes === "function", isNode: isNode, hasEnvVariables: hasEnvVariables, env: env, global: globalObject, getNativePromise: getNativePromise, domainBind: domainBind }; ret.isRecentNode = ret.isNode && (function() { var version = process.versions.node.split(".").map(Number); return (version[0] === 0 && version[1] > 10) || (version[0] > 0); })(); if (ret.isNode) ret.toFastProperties(process); try {throw new Error(); } catch (e) {ret.lastLineError = e;} module.exports = ret; },{"./es5":10}]},{},[3])(3) }); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; } /* RequireJS 2.2.0 Copyright jQuery Foundation and other contributors. Released under MIT license, http://github.com/requirejs/requirejs/LICENSE */ var requirejs,require,define; (function(ga){function ka(b,c,d,g){return g||""}function K(b){return"[object Function]"===Q.call(b)}function L(b){return"[object Array]"===Q.call(b)}function y(b,c){if(b){var d;for(d=0;dthis.depCount&&!this.defined){if(K(k)){if(this.events.error&&this.map.isDefine||g.onError!== ha)try{h=l.execCb(c,k,b,h)}catch(d){a=d}else h=l.execCb(c,k,b,h);this.map.isDefine&&void 0===h&&((b=this.module)?h=b.exports:this.usingExports&&(h=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",A(this.error=a)}else h=k;this.exports=h;if(this.map.isDefine&&!this.ignore&&(v[c]=h,g.onResourceLoad)){var f=[];y(this.depMaps,function(a){f.push(a.normalizedMap||a)});g.onResourceLoad(l,this.map,f)}C(c); this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}},callPlugin:function(){var a=this.map,b=a.id,d=q(a.prefix);this.depMaps.push(d);w(d,"defined",z(this,function(h){var k,f,d=e(fa,this.map.id),M=this.map.name,r=this.map.parentMap?this.map.parentMap.name:null,m=l.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(h.normalize&&(M=h.normalize(M,function(a){return c(a,r,!0)})|| ""),f=q(a.prefix+"!"+M,this.map.parentMap),w(f,"defined",z(this,function(a){this.map.normalizedMap=f;this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),h=e(t,f.id)){this.depMaps.push(f);if(this.events.error)h.on("error",z(this,function(a){this.emit("error",a)}));h.enable()}}else d?(this.map.url=l.nameToUrl(d),this.load()):(k=z(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),k.error=z(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];D(t,function(a){0=== a.map.id.indexOf(b+"_unnormalized")&&C(a.map.id)});A(a)}),k.fromText=z(this,function(h,c){var d=a.name,f=q(d),M=S;c&&(h=c);M&&(S=!1);u(f);x(p.config,b)&&(p.config[d]=p.config[b]);try{g.exec(h)}catch(e){return A(F("fromtexteval","fromText eval for "+b+" failed: "+e,e,[b]))}M&&(S=!0);this.depMaps.push(f);l.completeLoad(d);m([d],k)}),h.load(a.name,m,k,p))}));l.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){Z[this.map.id]=this;this.enabling=this.enabled=!0;y(this.depMaps,z(this,function(a, b){var c,h;if("string"===typeof a){a=q(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=e(R,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;w(a,"defined",z(this,function(a){this.undefed||(this.defineDep(b,a),this.check())}));this.errback?w(a,"error",z(this,this.errback)):this.events.error&&w(a,"error",z(this,function(a){this.emit("error",a)}))}c=a.id;h=t[c];x(R,c)||!h||h.enabled||l.enable(a,this)}));D(this.pluginMaps,z(this,function(a){var b=e(t,a.id); b&&!b.enabled&&l.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){y(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};l={config:p,contextName:b,registry:t,defined:v,urlFetched:W,defQueue:G,defQueueMap:{},Module:da,makeModuleMap:q,nextTick:g.nextTick,onError:A,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");if("string"===typeof a.urlArgs){var b= a.urlArgs;a.urlArgs=function(a,c){return(-1===c.indexOf("?")?"?":"&")+b}}var c=p.shim,h={paths:!0,bundles:!0,config:!0,map:!0};D(a,function(a,b){h[b]?(p[b]||(p[b]={}),Y(p[b],a,!0,!0)):p[b]=a});a.bundles&&D(a.bundles,function(a,b){y(a,function(a){a!==b&&(fa[a]=b)})});a.shim&&(D(a.shim,function(a,b){L(a)&&(a={deps:a});!a.exports&&!a.init||a.exportsFn||(a.exportsFn=l.makeShimExports(a));c[b]=a}),p.shim=c);a.packages&&y(a.packages,function(a){var b;a="string"===typeof a?{name:a}:a;b=a.name;a.location&& (p.paths[b]=a.location);p.pkgs[b]=a.name+"/"+(a.main||"main").replace(na,"").replace(U,"")});D(t,function(a,b){a.inited||a.map.unnormalized||(a.map=q(b,null,!0))});(a.deps||a.callback)&&l.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ga,arguments));return b||a.exports&&ia(a.exports)}},makeRequire:function(a,n){function m(c,d,f){var e,r;n.enableBuildCallback&&d&&K(d)&&(d.__requireJsBuild=!0);if("string"===typeof c){if(K(d))return A(F("requireargs", "Invalid require call"),f);if(a&&x(R,c))return R[c](t[a.id]);if(g.get)return g.get(l,c,a,m);e=q(c,a,!1,!0);e=e.id;return x(v,e)?v[e]:A(F("notloaded",'Module name "'+e+'" has not been loaded yet for context: '+b+(a?"":". Use require([])")))}P();l.nextTick(function(){P();r=u(q(null,a));r.skipMap=n.skipMap;r.init(c,d,f,{enabled:!0});H()});return m}n=n||{};Y(m,{isBrowser:E,toUrl:function(b){var d,f=b.lastIndexOf("."),g=b.split("/")[0];-1!==f&&("."!==g&&".."!==g||1e.attachEvent.toString().indexOf("[native code")||ca?(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)):(S=!0,e.attachEvent("onreadystatechange",b.onScriptLoad));e.src=d;if(m.onNodeCreated)m.onNodeCreated(e,m,c,d);P=e;H?C.insertBefore(e,H):C.appendChild(e);P=null;return e}if(ja)try{setTimeout(function(){}, 0),importScripts(d),b.completeLoad(c)}catch(q){b.onError(F("importscripts","importScripts failed for "+c+" at "+d,q,[c]))}};E&&!w.skipDataMain&&X(document.getElementsByTagName("script"),function(b){C||(C=b.parentNode);if(O=b.getAttribute("data-main"))return u=O,w.baseUrl||-1!==u.indexOf("!")||(I=u.split("/"),u=I.pop(),T=I.length?I.join("/")+"/":"./",w.baseUrl=T),u=u.replace(U,""),g.jsExtRegExp.test(u)&&(u=O),w.deps=w.deps?w.deps.concat(u):[u],!0});define=function(b,c,d){var e,g;"string"!==typeof b&& (d=c,c=b,b=null);L(c)||(d=c,c=null);!c&&K(d)&&(c=[],d.length&&(d.toString().replace(qa,ka).replace(ra,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));S&&(e=P||pa())&&(b||(b=e.getAttribute("data-requiremodule")),g=J[e.getAttribute("data-requirecontext")]);g?(g.defQueue.push([b,c,d]),g.defQueueMap[b]=!0):V.push([b,c,d])};define.amd={jQuery:!0};g.exec=function(b){return eval(b)};g(w)}})(this); _aureliaConfigureModuleLoader(); define('text',{}); define('aurelia-http-client',['exports', 'aurelia-path', 'aurelia-pal'], function (exports, _aureliaPath, _aureliaPal) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpClient = exports.RequestBuilder = exports.HttpRequestMessage = exports.JSONPRequestMessage = exports.RequestMessageProcessor = exports.mimeTypes = exports.HttpResponseMessage = exports.RequestMessage = exports.Headers = undefined; exports.timeoutTransformer = timeoutTransformer; exports.callbackParameterNameTransformer = callbackParameterNameTransformer; exports.credentialsTransformer = credentialsTransformer; exports.progressTransformer = progressTransformer; exports.downloadProgressTransformer = downloadProgressTransformer; exports.responseTypeTransformer = responseTypeTransformer; exports.headerTransformer = headerTransformer; exports.contentTransformer = contentTransformer; exports.createJSONPRequestMessageProcessor = createJSONPRequestMessageProcessor; exports.createHttpRequestMessageProcessor = createHttpRequestMessageProcessor; function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var Headers = exports.Headers = function () { function Headers() { var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.headers = {}; for (var _key in headers) { this.headers[_key.toLowerCase()] = { key: _key, value: headers[_key] }; } } Headers.prototype.add = function add(key, value) { this.headers[key.toLowerCase()] = { key: key, value: value }; }; Headers.prototype.get = function get(key) { var header = this.headers[key.toLowerCase()]; return header ? header.value : undefined; }; Headers.prototype.clear = function clear() { this.headers = {}; }; Headers.prototype.has = function has(header) { return this.headers.hasOwnProperty(header.toLowerCase()); }; Headers.prototype.configureXHR = function configureXHR(xhr) { for (var name in this.headers) { if (this.headers.hasOwnProperty(name)) { xhr.setRequestHeader(this.headers[name].key, this.headers[name].value); } } }; Headers.parse = function parse(headerStr) { var headers = new Headers(); if (!headerStr) { return headers; } var headerPairs = headerStr.split('\r\n'); for (var i = 0; i < headerPairs.length; i++) { var headerPair = headerPairs[i]; var index = headerPair.indexOf(': '); if (index > 0) { var _key2 = headerPair.substring(0, index); var val = headerPair.substring(index + 2); headers.add(_key2, val); } } return headers; }; return Headers; }(); var RequestMessage = exports.RequestMessage = function () { function RequestMessage(method, url, content, headers) { this.method = method; this.url = url; this.content = content; this.headers = headers || new Headers(); this.baseUrl = ''; } RequestMessage.prototype.buildFullUrl = function buildFullUrl() { var absoluteUrl = /^([a-z][a-z0-9+\-.]*:)?\/\//i; var url = absoluteUrl.test(this.url) ? this.url : (0, _aureliaPath.join)(this.baseUrl, this.url); if (this.params) { var qs = (0, _aureliaPath.buildQueryString)(this.params, this.traditional); url = qs ? url + (this.url.indexOf('?') < 0 ? '?' : '&') + qs : url; } return url; }; return RequestMessage; }(); var HttpResponseMessage = exports.HttpResponseMessage = function () { function HttpResponseMessage(requestMessage, xhr, responseType, reviver) { this.requestMessage = requestMessage; this.statusCode = xhr.status; this.response = xhr.response || xhr.responseText; this.isSuccess = xhr.status >= 200 && xhr.status < 400; this.statusText = xhr.statusText; this.reviver = reviver; this.mimeType = null; if (xhr.getAllResponseHeaders) { try { this.headers = Headers.parse(xhr.getAllResponseHeaders()); } catch (err) { if (xhr.requestHeaders) this.headers = new Headers(xhr.requestHeaders); } } else { this.headers = new Headers(); } var contentType = void 0; if (this.headers && this.headers.headers) { contentType = this.headers.get('Content-Type'); } if (contentType) { this.mimeType = responseType = contentType.split(';')[0].trim(); if (mimeTypes.hasOwnProperty(this.mimeType)) responseType = mimeTypes[this.mimeType]; } this.responseType = responseType; } _createClass(HttpResponseMessage, [{ key: 'content', get: function get() { try { if (this._content !== undefined) { return this._content; } if (this.response === undefined || this.response === null || this.response === '') { this._content = this.response; return this._content; } if (this.responseType === 'json') { this._content = JSON.parse(this.response, this.reviver); return this._content; } if (this.reviver) { this._content = this.reviver(this.response); return this._content; } this._content = this.response; return this._content; } catch (e) { if (this.isSuccess) { throw e; } this._content = null; return this._content; } } }]); return HttpResponseMessage; }(); var mimeTypes = exports.mimeTypes = { 'text/html': 'html', 'text/javascript': 'js', 'application/javascript': 'js', 'text/json': 'json', 'application/json': 'json', 'application/rss+xml': 'rss', 'application/atom+xml': 'atom', 'application/xhtml+xml': 'xhtml', 'text/markdown': 'md', 'text/xml': 'xml', 'text/mathml': 'mml', 'application/xml': 'xml', 'text/yml': 'yml', 'text/csv': 'csv', 'text/css': 'css', 'text/less': 'less', 'text/stylus': 'styl', 'text/scss': 'scss', 'text/sass': 'sass', 'text/plain': 'txt' }; function applyXhrTransformers(xhrTransformers, client, processor, message, xhr) { var i = void 0; var ii = void 0; for (i = 0, ii = xhrTransformers.length; i < ii; ++i) { xhrTransformers[i](client, processor, message, xhr); } } var RequestMessageProcessor = exports.RequestMessageProcessor = function () { function RequestMessageProcessor(xhrType, xhrTransformers) { this.XHRType = xhrType; this.xhrTransformers = xhrTransformers; this.isAborted = false; } RequestMessageProcessor.prototype.abort = function abort() { if (this.xhr && this.xhr.readyState !== _aureliaPal.PLATFORM.XMLHttpRequest.UNSENT) { this.xhr.abort(); } this.isAborted = true; }; RequestMessageProcessor.prototype.process = function process(client, requestMessage) { var _this = this; var promise = new Promise(function (resolve, reject) { var xhr = _this.xhr = new _this.XHRType(); xhr.onload = function (e) { var response = new HttpResponseMessage(requestMessage, xhr, requestMessage.responseType, requestMessage.reviver); if (response.isSuccess) { resolve(response); } else { reject(response); } }; xhr.ontimeout = function (e) { reject(new HttpResponseMessage(requestMessage, { response: e, status: xhr.status, statusText: xhr.statusText }, 'timeout')); }; xhr.onerror = function (e) { reject(new HttpResponseMessage(requestMessage, { response: e, status: xhr.status, statusText: xhr.statusText }, 'error')); }; xhr.onabort = function (e) { reject(new HttpResponseMessage(requestMessage, { response: e, status: xhr.status, statusText: xhr.statusText }, 'abort')); }; }); return Promise.resolve(requestMessage).then(function (message) { var processRequest = function processRequest() { if (_this.isAborted) { _this.xhr.abort(); } else { _this.xhr.open(message.method, message.buildFullUrl(), true, message.user, message.password); applyXhrTransformers(_this.xhrTransformers, client, _this, message, _this.xhr); if (typeof message.content === 'undefined') { _this.xhr.send(); } else { _this.xhr.send(message.content); } } return promise; }; var chain = [[processRequest, undefined]]; var interceptors = message.interceptors || []; interceptors.forEach(function (interceptor) { if (interceptor.request || interceptor.requestError) { chain.unshift([interceptor.request ? interceptor.request.bind(interceptor) : undefined, interceptor.requestError ? interceptor.requestError.bind(interceptor) : undefined]); } if (interceptor.response || interceptor.responseError) { chain.push([interceptor.response ? interceptor.response.bind(interceptor) : undefined, interceptor.responseError ? interceptor.responseError.bind(interceptor) : undefined]); } }); var interceptorsPromise = Promise.resolve(message); while (chain.length) { var _interceptorsPromise; interceptorsPromise = (_interceptorsPromise = interceptorsPromise).then.apply(_interceptorsPromise, chain.shift()); } return interceptorsPromise; }); }; return RequestMessageProcessor; }(); function timeoutTransformer(client, processor, message, xhr) { if (message.timeout !== undefined) { xhr.timeout = message.timeout; } } function callbackParameterNameTransformer(client, processor, message, xhr) { if (message.callbackParameterName !== undefined) { xhr.callbackParameterName = message.callbackParameterName; } } function credentialsTransformer(client, processor, message, xhr) { if (message.withCredentials !== undefined) { xhr.withCredentials = message.withCredentials; } } function progressTransformer(client, processor, message, xhr) { if (message.progressCallback) { xhr.upload.onprogress = message.progressCallback; } } function downloadProgressTransformer(client, processor, message, xhr) { if (message.downloadProgressCallback) { xhr.onprogress = message.downloadProgressCallback; } } function responseTypeTransformer(client, processor, message, xhr) { var responseType = message.responseType; if (responseType === 'json') { responseType = 'text'; } xhr.responseType = responseType; } function headerTransformer(client, processor, message, xhr) { message.headers.configureXHR(xhr); } function contentTransformer(client, processor, message, xhr) { if (message.skipContentProcessing) { return; } if (_aureliaPal.PLATFORM.global.FormData && message.content instanceof FormData) { return; } if (_aureliaPal.PLATFORM.global.Blob && message.content instanceof Blob) { return; } if (_aureliaPal.PLATFORM.global.ArrayBuffer && message.content instanceof ArrayBuffer) { return; } if (message.content instanceof Document) { return; } if (typeof message.content === 'string') { return; } if (message.content === null || message.content === undefined) { return; } message.content = JSON.stringify(message.content, message.replacer); if (!message.headers.has('Content-Type')) { message.headers.add('Content-Type', 'application/json'); } } var JSONPRequestMessage = exports.JSONPRequestMessage = function (_RequestMessage) { _inherits(JSONPRequestMessage, _RequestMessage); function JSONPRequestMessage(url, callbackParameterName) { var _this2 = _possibleConstructorReturn(this, _RequestMessage.call(this, 'JSONP', url)); _this2.responseType = 'jsonp'; _this2.callbackParameterName = callbackParameterName; return _this2; } return JSONPRequestMessage; }(RequestMessage); var JSONPXHR = function () { function JSONPXHR() { } JSONPXHR.prototype.open = function open(method, url) { this.method = method; this.url = url; this.callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random()); }; JSONPXHR.prototype.send = function send() { var _this3 = this; var url = this.url + (this.url.indexOf('?') >= 0 ? '&' : '?') + encodeURIComponent(this.callbackParameterName) + '=' + this.callbackName; var script = _aureliaPal.DOM.createElement('script'); script.src = url; script.onerror = function (e) { cleanUp(); _this3.status = 0; _this3.onerror(new Error('error')); }; var cleanUp = function cleanUp() { delete _aureliaPal.PLATFORM.global[_this3.callbackName]; _aureliaPal.DOM.removeNode(script); }; _aureliaPal.PLATFORM.global[this.callbackName] = function (data) { cleanUp(); if (_this3.status === undefined) { _this3.status = 200; _this3.statusText = 'OK'; _this3.response = data; _this3.onload(_this3); } }; _aureliaPal.DOM.appendNode(script); if (this.timeout !== undefined) { setTimeout(function () { if (_this3.status === undefined) { _this3.status = 0; _this3.ontimeout(new Error('timeout')); } }, this.timeout); } }; JSONPXHR.prototype.abort = function abort() { if (this.status === undefined) { this.status = 0; this.onabort(new Error('abort')); } }; JSONPXHR.prototype.setRequestHeader = function setRequestHeader() {}; return JSONPXHR; }(); function createJSONPRequestMessageProcessor() { return new RequestMessageProcessor(JSONPXHR, [timeoutTransformer, callbackParameterNameTransformer]); } var HttpRequestMessage = exports.HttpRequestMessage = function (_RequestMessage2) { _inherits(HttpRequestMessage, _RequestMessage2); function HttpRequestMessage(method, url, content, headers) { var _this4 = _possibleConstructorReturn(this, _RequestMessage2.call(this, method, url, content, headers)); _this4.responseType = 'json';return _this4; } return HttpRequestMessage; }(RequestMessage); function createHttpRequestMessageProcessor() { return new RequestMessageProcessor(_aureliaPal.PLATFORM.XMLHttpRequest, [timeoutTransformer, credentialsTransformer, progressTransformer, downloadProgressTransformer, responseTypeTransformer, contentTransformer, headerTransformer]); } var RequestBuilder = exports.RequestBuilder = function () { function RequestBuilder(client) { this.client = client; this.transformers = client.requestTransformers.slice(0); this.useJsonp = false; } RequestBuilder.prototype.asDelete = function asDelete() { return this._addTransformer(function (client, processor, message) { message.method = 'DELETE'; }); }; RequestBuilder.prototype.asGet = function asGet() { return this._addTransformer(function (client, processor, message) { message.method = 'GET'; }); }; RequestBuilder.prototype.asHead = function asHead() { return this._addTransformer(function (client, processor, message) { message.method = 'HEAD'; }); }; RequestBuilder.prototype.asOptions = function asOptions() { return this._addTransformer(function (client, processor, message) { message.method = 'OPTIONS'; }); }; RequestBuilder.prototype.asPatch = function asPatch() { return this._addTransformer(function (client, processor, message) { message.method = 'PATCH'; }); }; RequestBuilder.prototype.asPost = function asPost() { return this._addTransformer(function (client, processor, message) { message.method = 'POST'; }); }; RequestBuilder.prototype.asPut = function asPut() { return this._addTransformer(function (client, processor, message) { message.method = 'PUT'; }); }; RequestBuilder.prototype.asJsonp = function asJsonp(callbackParameterName) { this.useJsonp = true; return this._addTransformer(function (client, processor, message) { message.callbackParameterName = callbackParameterName; }); }; RequestBuilder.prototype.withUrl = function withUrl(url) { return this._addTransformer(function (client, processor, message) { message.url = url; }); }; RequestBuilder.prototype.withContent = function withContent(content) { return this._addTransformer(function (client, processor, message) { message.content = content; }); }; RequestBuilder.prototype.withBaseUrl = function withBaseUrl(baseUrl) { return this._addTransformer(function (client, processor, message) { message.baseUrl = baseUrl; }); }; RequestBuilder.prototype.withParams = function withParams(params, traditional) { return this._addTransformer(function (client, processor, message) { message.traditional = traditional; message.params = params; }); }; RequestBuilder.prototype.withResponseType = function withResponseType(responseType) { return this._addTransformer(function (client, processor, message) { message.responseType = responseType; }); }; RequestBuilder.prototype.withTimeout = function withTimeout(timeout) { return this._addTransformer(function (client, processor, message) { message.timeout = timeout; }); }; RequestBuilder.prototype.withHeader = function withHeader(key, value) { return this._addTransformer(function (client, processor, message) { message.headers.add(key, value); }); }; RequestBuilder.prototype.withCredentials = function withCredentials(value) { return this._addTransformer(function (client, processor, message) { message.withCredentials = value; }); }; RequestBuilder.prototype.withLogin = function withLogin(user, password) { return this._addTransformer(function (client, processor, message) { message.user = user;message.password = password; }); }; RequestBuilder.prototype.withReviver = function withReviver(reviver) { return this._addTransformer(function (client, processor, message) { message.reviver = reviver; }); }; RequestBuilder.prototype.withReplacer = function withReplacer(replacer) { return this._addTransformer(function (client, processor, message) { message.replacer = replacer; }); }; RequestBuilder.prototype.withProgressCallback = function withProgressCallback(progressCallback) { return this._addTransformer(function (client, processor, message) { message.progressCallback = progressCallback; }); }; RequestBuilder.prototype.withDownloadProgressCallback = function withDownloadProgressCallback(downloadProgressCallback) { return this._addTransformer(function (client, processor, message) { message.downloadProgressCallback = downloadProgressCallback; }); }; RequestBuilder.prototype.withCallbackParameterName = function withCallbackParameterName(callbackParameterName) { return this._addTransformer(function (client, processor, message) { message.callbackParameterName = callbackParameterName; }); }; RequestBuilder.prototype.withInterceptor = function withInterceptor(interceptor) { return this._addTransformer(function (client, processor, message) { message.interceptors = message.interceptors || []; message.interceptors.unshift(interceptor); }); }; RequestBuilder.prototype.skipContentProcessing = function skipContentProcessing() { return this._addTransformer(function (client, processor, message) { message.skipContentProcessing = true; }); }; RequestBuilder.prototype._addTransformer = function _addTransformer(fn) { this.transformers.push(fn); return this; }; RequestBuilder.addHelper = function addHelper(name, fn) { RequestBuilder.prototype[name] = function () { return this._addTransformer(fn.apply(this, arguments)); }; }; RequestBuilder.prototype.send = function send() { var message = this.useJsonp ? new JSONPRequestMessage() : new HttpRequestMessage(); return this.client.send(message, this.transformers); }; return RequestBuilder; }(); function trackRequestStart(client, processor) { client.pendingRequests.push(processor); client.isRequesting = true; } function trackRequestEnd(client, processor) { var index = client.pendingRequests.indexOf(processor); client.pendingRequests.splice(index, 1); client.isRequesting = client.pendingRequests.length > 0; if (!client.isRequesting) { var evt = _aureliaPal.DOM.createCustomEvent('aurelia-http-client-requests-drained', { bubbles: true, cancelable: true }); setTimeout(function () { return _aureliaPal.DOM.dispatchEvent(evt); }, 1); } } var HttpClient = exports.HttpClient = function () { function HttpClient() { this.isRequesting = false; this.requestTransformers = []; this.requestProcessorFactories = new Map(); this.requestProcessorFactories.set(HttpRequestMessage, createHttpRequestMessageProcessor); this.requestProcessorFactories.set(JSONPRequestMessage, createJSONPRequestMessageProcessor); this.pendingRequests = []; } HttpClient.prototype.configure = function configure(fn) { var builder = new RequestBuilder(this); fn(builder); this.requestTransformers = builder.transformers; return this; }; HttpClient.prototype.createRequest = function createRequest(url) { var builder = new RequestBuilder(this); if (url) { builder.withUrl(url); } return builder; }; HttpClient.prototype.send = function send(requestMessage, transformers) { var _this5 = this; var createProcessor = this.requestProcessorFactories.get(requestMessage.constructor); var processor = void 0; var promise = void 0; var i = void 0; var ii = void 0; if (!createProcessor) { throw new Error('No request message processor factory for ' + requestMessage.constructor + '.'); } processor = createProcessor(); trackRequestStart(this, processor); transformers = transformers || this.requestTransformers; promise = Promise.resolve(requestMessage).then(function (message) { for (i = 0, ii = transformers.length; i < ii; ++i) { transformers[i](_this5, processor, message); } return processor.process(_this5, message).then(function (response) { trackRequestEnd(_this5, processor); return response; }).catch(function (response) { trackRequestEnd(_this5, processor); throw response; }); }); promise.abort = promise.cancel = function () { processor.abort(); }; return promise; }; HttpClient.prototype.delete = function _delete(url) { return this.createRequest(url).asDelete().send(); }; HttpClient.prototype.get = function get(url, params, traditional) { var req = this.createRequest(url).asGet(); if (params) { return req.withParams(params, traditional).send(); } return req.send(); }; HttpClient.prototype.head = function head(url) { return this.createRequest(url).asHead().send(); }; HttpClient.prototype.jsonp = function jsonp(url) { var callbackParameterName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'jsoncallback'; return this.createRequest(url).asJsonp(callbackParameterName).send(); }; HttpClient.prototype.options = function options(url) { return this.createRequest(url).asOptions().send(); }; HttpClient.prototype.put = function put(url, content) { return this.createRequest(url).asPut().withContent(content).send(); }; HttpClient.prototype.patch = function patch(url, content) { return this.createRequest(url).asPatch().withContent(content).send(); }; HttpClient.prototype.post = function post(url, content) { return this.createRequest(url).asPost().withContent(content).send(); }; return HttpClient; }(); }); define('aurelia-fetch-client',['exports'], function (exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.json = json; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; function json(body) { return new Blob([JSON.stringify(body !== undefined ? body : {})], { type: 'application/json' }); } var HttpClientConfiguration = exports.HttpClientConfiguration = function () { function HttpClientConfiguration() { this.baseUrl = ''; this.defaults = {}; this.interceptors = []; } HttpClientConfiguration.prototype.withBaseUrl = function withBaseUrl(baseUrl) { this.baseUrl = baseUrl; return this; }; HttpClientConfiguration.prototype.withDefaults = function withDefaults(defaults) { this.defaults = defaults; return this; }; HttpClientConfiguration.prototype.withInterceptor = function withInterceptor(interceptor) { this.interceptors.push(interceptor); return this; }; HttpClientConfiguration.prototype.useStandardConfiguration = function useStandardConfiguration() { var standardConfig = { credentials: 'same-origin' }; Object.assign(this.defaults, standardConfig, this.defaults); return this.rejectErrorResponses(); }; HttpClientConfiguration.prototype.rejectErrorResponses = function rejectErrorResponses() { return this.withInterceptor({ response: rejectOnError }); }; return HttpClientConfiguration; }(); function rejectOnError(response) { if (!response.ok) { throw response; } return response; } var HttpClient = exports.HttpClient = function () { function HttpClient() { this.activeRequestCount = 0; this.isRequesting = false; this.isConfigured = false; this.baseUrl = ''; this.defaults = null; this.interceptors = []; if (typeof fetch === 'undefined') { throw new Error('HttpClient requires a Fetch API implementation, but the current environment doesn\'t support it. You may need to load a polyfill such as https://github.com/github/fetch'); } } HttpClient.prototype.configure = function configure(config) { var normalizedConfig = void 0; if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') { normalizedConfig = { defaults: config }; } else if (typeof config === 'function') { normalizedConfig = new HttpClientConfiguration(); normalizedConfig.baseUrl = this.baseUrl; normalizedConfig.defaults = Object.assign({}, this.defaults); normalizedConfig.interceptors = this.interceptors; var c = config(normalizedConfig); if (HttpClientConfiguration.prototype.isPrototypeOf(c)) { normalizedConfig = c; } } else { throw new Error('invalid config'); } var defaults = normalizedConfig.defaults; if (defaults && Headers.prototype.isPrototypeOf(defaults.headers)) { throw new Error('Default headers must be a plain object.'); } this.baseUrl = normalizedConfig.baseUrl; this.defaults = defaults; this.interceptors = normalizedConfig.interceptors || []; this.isConfigured = true; return this; }; HttpClient.prototype.fetch = function (_fetch) { function fetch(_x, _x2) { return _fetch.apply(this, arguments); } fetch.toString = function () { return _fetch.toString(); }; return fetch; }(function (input, init) { var _this = this; trackRequestStart.call(this); var request = Promise.resolve().then(function () { return buildRequest.call(_this, input, init, _this.defaults); }); var promise = processRequest(request, this.interceptors).then(function (result) { var response = null; if (Response.prototype.isPrototypeOf(result)) { response = result; } else if (Request.prototype.isPrototypeOf(result)) { request = Promise.resolve(result); response = fetch(result); } else { throw new Error('An invalid result was returned by the interceptor chain. Expected a Request or Response instance, but got [' + result + ']'); } return request.then(function (_request) { return processResponse(response, _this.interceptors, _request); }); }); return trackRequestEndWith.call(this, promise); }); return HttpClient; }(); var absoluteUrlRegexp = /^([a-z][a-z0-9+\-.]*:)?\/\//i; function trackRequestStart() { this.isRequesting = !! ++this.activeRequestCount; } function trackRequestEnd() { this.isRequesting = !! --this.activeRequestCount; } function trackRequestEndWith(promise) { var handle = trackRequestEnd.bind(this); promise.then(handle, handle); return promise; } function parseHeaderValues(headers) { var parsedHeaders = {}; for (var name in headers || {}) { if (headers.hasOwnProperty(name)) { parsedHeaders[name] = typeof headers[name] === 'function' ? headers[name]() : headers[name]; } } return parsedHeaders; } function buildRequest(input, init) { var defaults = this.defaults || {}; var request = void 0; var body = void 0; var requestContentType = void 0; var parsedDefaultHeaders = parseHeaderValues(defaults.headers); if (Request.prototype.isPrototypeOf(input)) { request = input; requestContentType = new Headers(request.headers).get('Content-Type'); } else { init || (init = {}); body = init.body; var bodyObj = body ? { body: body } : null; var requestInit = Object.assign({}, defaults, { headers: {} }, init, bodyObj); requestContentType = new Headers(requestInit.headers).get('Content-Type'); request = new Request(getRequestUrl(this.baseUrl, input), requestInit); } if (!requestContentType && new Headers(parsedDefaultHeaders).has('content-type')) { request.headers.set('Content-Type', new Headers(parsedDefaultHeaders).get('content-type')); } setDefaultHeaders(request.headers, parsedDefaultHeaders); if (body && Blob.prototype.isPrototypeOf(body) && body.type) { request.headers.set('Content-Type', body.type); } return request; } function getRequestUrl(baseUrl, url) { if (absoluteUrlRegexp.test(url)) { return url; } return (baseUrl || '') + url; } function setDefaultHeaders(headers, defaultHeaders) { for (var name in defaultHeaders || {}) { if (defaultHeaders.hasOwnProperty(name) && !headers.has(name)) { headers.set(name, defaultHeaders[name]); } } } function processRequest(request, interceptors) { return applyInterceptors(request, interceptors, 'request', 'requestError'); } function processResponse(response, interceptors, request) { return applyInterceptors(response, interceptors, 'response', 'responseError', request); } function applyInterceptors(input, interceptors, successName, errorName) { for (var _len = arguments.length, interceptorArgs = Array(_len > 4 ? _len - 4 : 0), _key = 4; _key < _len; _key++) { interceptorArgs[_key - 4] = arguments[_key]; } return (interceptors || []).reduce(function (chain, interceptor) { var successHandler = interceptor[successName]; var errorHandler = interceptor[errorName]; return chain.then(successHandler && function (value) { return successHandler.call.apply(successHandler, [interceptor, value].concat(interceptorArgs)); } || identity, errorHandler && function (reason) { return errorHandler.call.apply(errorHandler, [interceptor, reason].concat(interceptorArgs)); } || thrower); }, Promise.resolve(input)); } function identity(x) { return x; } function thrower(x) { throw x; } }); define('aurelia-binding',['exports', 'aurelia-logging', 'aurelia-pal', 'aurelia-task-queue', 'aurelia-metadata'], function (exports, _aureliaLogging, _aureliaPal, _aureliaTaskQueue, _aureliaMetadata) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSetObserver = exports.BindingEngine = exports.NameExpression = exports.Listener = exports.ListenerExpression = exports.BindingBehaviorResource = exports.ValueConverterResource = exports.Call = exports.CallExpression = exports.Binding = exports.BindingExpression = exports.ObjectObservationAdapter = exports.ObserverLocator = exports.SVGAnalyzer = exports.presentationAttributes = exports.presentationElements = exports.elements = exports.ComputedExpression = exports.ClassObserver = exports.SelectValueObserver = exports.CheckedObserver = exports.ValueAttributeObserver = exports.StyleObserver = exports.DataAttributeObserver = exports.dataAttributeAccessor = exports.XLinkAttributeObserver = exports.SetterObserver = exports.PrimitiveObserver = exports.propertyAccessor = exports.DirtyCheckProperty = exports.DirtyChecker = exports.EventManager = exports.delegationStrategy = exports.getMapObserver = exports.ParserImplementation = exports.Parser = exports.Scanner = exports.Lexer = exports.Token = exports.bindingMode = exports.ExpressionCloner = exports.Unparser = exports.LiteralObject = exports.LiteralArray = exports.LiteralString = exports.LiteralPrimitive = exports.PrefixNot = exports.Binary = exports.CallFunction = exports.CallMember = exports.CallScope = exports.AccessKeyed = exports.AccessMember = exports.AccessScope = exports.AccessThis = exports.Conditional = exports.Assign = exports.ValueConverter = exports.BindingBehavior = exports.Chain = exports.Expression = exports.getArrayObserver = exports.CollectionLengthObserver = exports.ModifyCollectionObserver = exports.ExpressionObserver = exports.sourceContext = exports.targetContext = undefined; exports.camelCase = camelCase; exports.createOverrideContext = createOverrideContext; exports.getContextFor = getContextFor; exports.createScopeForTest = createScopeForTest; exports.connectable = connectable; exports.enqueueBindingConnect = enqueueBindingConnect; exports.subscriberCollection = subscriberCollection; exports.calcSplices = calcSplices; exports.mergeSplice = mergeSplice; exports.projectArraySplices = projectArraySplices; exports.getChangeRecords = getChangeRecords; exports.cloneExpression = cloneExpression; exports.hasDeclaredDependencies = hasDeclaredDependencies; exports.declarePropertyDependencies = declarePropertyDependencies; exports.computedFrom = computedFrom; exports.createComputedObserver = createComputedObserver; exports.valueConverter = valueConverter; exports.bindingBehavior = bindingBehavior; exports.observable = observable; exports.connectBindingToSignal = connectBindingToSignal; exports.signalBindings = signalBindings; var LogManager = _interopRequireWildcard(_aureliaLogging); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var _dec, _dec2, _class, _dec3, _class2, _dec4, _class3, _dec5, _class5, _dec6, _class7, _dec7, _class8, _dec8, _class9, _dec9, _class10, _class12, _temp, _dec10, _class13, _class14, _temp2; var targetContext = exports.targetContext = 'Binding:target'; var sourceContext = exports.sourceContext = 'Binding:source'; var map = Object.create(null); function camelCase(name) { if (name in map) { return map[name]; } var result = name.charAt(0).toLowerCase() + name.slice(1).replace(/[_.-](\w|$)/g, function (_, x) { return x.toUpperCase(); }); map[name] = result; return result; } function createOverrideContext(bindingContext, parentOverrideContext) { return { bindingContext: bindingContext, parentOverrideContext: parentOverrideContext || null }; } function getContextFor(name, scope, ancestor) { var oc = scope.overrideContext; if (ancestor) { while (ancestor && oc) { ancestor--; oc = oc.parentOverrideContext; } if (ancestor || !oc) { return undefined; } return name in oc ? oc : oc.bindingContext; } while (oc && !(name in oc) && !(oc.bindingContext && name in oc.bindingContext)) { oc = oc.parentOverrideContext; } if (oc) { return name in oc ? oc : oc.bindingContext; } return scope.bindingContext || scope.overrideContext; } function createScopeForTest(bindingContext, parentBindingContext) { if (parentBindingContext) { return { bindingContext: bindingContext, overrideContext: createOverrideContext(bindingContext, createOverrideContext(parentBindingContext)) }; } return { bindingContext: bindingContext, overrideContext: createOverrideContext(bindingContext) }; } var slotNames = []; var versionSlotNames = []; for (var i = 0; i < 100; i++) { slotNames.push('_observer' + i); versionSlotNames.push('_observerVersion' + i); } function addObserver(observer) { var observerSlots = this._observerSlots === undefined ? 0 : this._observerSlots; var i = observerSlots; while (i-- && this[slotNames[i]] !== observer) {} if (i === -1) { i = 0; while (this[slotNames[i]]) { i++; } this[slotNames[i]] = observer; observer.subscribe(sourceContext, this); if (i === observerSlots) { this._observerSlots = i + 1; } } if (this._version === undefined) { this._version = 0; } this[versionSlotNames[i]] = this._version; } function observeProperty(obj, propertyName) { var observer = this.observerLocator.getObserver(obj, propertyName); addObserver.call(this, observer); } function observeArray(array) { var observer = this.observerLocator.getArrayObserver(array); addObserver.call(this, observer); } function unobserve(all) { var i = this._observerSlots; while (i--) { if (all || this[versionSlotNames[i]] !== this._version) { var observer = this[slotNames[i]]; this[slotNames[i]] = null; if (observer) { observer.unsubscribe(sourceContext, this); } } } } function connectable() { return function (target) { target.prototype.observeProperty = observeProperty; target.prototype.observeArray = observeArray; target.prototype.unobserve = unobserve; target.prototype.addObserver = addObserver; }; } var queue = []; var queued = {}; var nextId = 0; var minimumImmediate = 100; var frameBudget = 15; var isFlushRequested = false; var immediate = 0; function flush(animationFrameStart) { var length = queue.length; var i = 0; while (i < length) { var binding = queue[i]; queued[binding.__connectQueueId] = false; binding.connect(true); i++; if (i % 100 === 0 && _aureliaPal.PLATFORM.performance.now() - animationFrameStart > frameBudget) { break; } } queue.splice(0, i); if (queue.length) { _aureliaPal.PLATFORM.requestAnimationFrame(flush); } else { isFlushRequested = false; immediate = 0; } } function enqueueBindingConnect(binding) { if (immediate < minimumImmediate) { immediate++; binding.connect(false); } else { var id = binding.__connectQueueId; if (id === undefined) { id = nextId; nextId++; binding.__connectQueueId = id; } if (!queued[id]) { queue.push(binding); queued[id] = true; } } if (!isFlushRequested) { isFlushRequested = true; _aureliaPal.PLATFORM.requestAnimationFrame(flush); } } function addSubscriber(context, callable) { if (this.hasSubscriber(context, callable)) { return false; } if (!this._context0) { this._context0 = context; this._callable0 = callable; return true; } if (!this._context1) { this._context1 = context; this._callable1 = callable; return true; } if (!this._context2) { this._context2 = context; this._callable2 = callable; return true; } if (!this._contextsRest) { this._contextsRest = [context]; this._callablesRest = [callable]; return true; } this._contextsRest.push(context); this._callablesRest.push(callable); return true; } function removeSubscriber(context, callable) { if (this._context0 === context && this._callable0 === callable) { this._context0 = null; this._callable0 = null; return true; } if (this._context1 === context && this._callable1 === callable) { this._context1 = null; this._callable1 = null; return true; } if (this._context2 === context && this._callable2 === callable) { this._context2 = null; this._callable2 = null; return true; } var callables = this._callablesRest; if (callables === undefined || callables.length === 0) { return false; } var contexts = this._contextsRest; var i = 0; while (!(callables[i] === callable && contexts[i] === context) && callables.length > i) { i++; } if (i >= callables.length) { return false; } contexts.splice(i, 1); callables.splice(i, 1); return true; } var arrayPool1 = []; var arrayPool2 = []; var poolUtilization = []; function callSubscribers(newValue, oldValue) { var context0 = this._context0; var callable0 = this._callable0; var context1 = this._context1; var callable1 = this._callable1; var context2 = this._context2; var callable2 = this._callable2; var length = this._contextsRest ? this._contextsRest.length : 0; var contextsRest = void 0; var callablesRest = void 0; var poolIndex = void 0; var i = void 0; if (length) { poolIndex = poolUtilization.length; while (poolIndex-- && poolUtilization[poolIndex]) {} if (poolIndex < 0) { poolIndex = poolUtilization.length; contextsRest = []; callablesRest = []; poolUtilization.push(true); arrayPool1.push(contextsRest); arrayPool2.push(callablesRest); } else { poolUtilization[poolIndex] = true; contextsRest = arrayPool1[poolIndex]; callablesRest = arrayPool2[poolIndex]; } i = length; while (i--) { contextsRest[i] = this._contextsRest[i]; callablesRest[i] = this._callablesRest[i]; } } if (context0) { if (callable0) { callable0.call(context0, newValue, oldValue); } else { context0(newValue, oldValue); } } if (context1) { if (callable1) { callable1.call(context1, newValue, oldValue); } else { context1(newValue, oldValue); } } if (context2) { if (callable2) { callable2.call(context2, newValue, oldValue); } else { context2(newValue, oldValue); } } if (length) { for (i = 0; i < length; i++) { var callable = callablesRest[i]; var context = contextsRest[i]; if (callable) { callable.call(context, newValue, oldValue); } else { context(newValue, oldValue); } contextsRest[i] = null; callablesRest[i] = null; } poolUtilization[poolIndex] = false; } } function hasSubscribers() { return !!(this._context0 || this._context1 || this._context2 || this._contextsRest && this._contextsRest.length); } function hasSubscriber(context, callable) { var has = this._context0 === context && this._callable0 === callable || this._context1 === context && this._callable1 === callable || this._context2 === context && this._callable2 === callable; if (has) { return true; } var index = void 0; var contexts = this._contextsRest; if (!contexts || (index = contexts.length) === 0) { return false; } var callables = this._callablesRest; while (index--) { if (contexts[index] === context && callables[index] === callable) { return true; } } return false; } function subscriberCollection() { return function (target) { target.prototype.addSubscriber = addSubscriber; target.prototype.removeSubscriber = removeSubscriber; target.prototype.callSubscribers = callSubscribers; target.prototype.hasSubscribers = hasSubscribers; target.prototype.hasSubscriber = hasSubscriber; }; } var ExpressionObserver = exports.ExpressionObserver = (_dec = connectable(), _dec2 = subscriberCollection(), _dec(_class = _dec2(_class = function () { function ExpressionObserver(scope, expression, observerLocator, lookupFunctions) { this.scope = scope; this.expression = expression; this.observerLocator = observerLocator; this.lookupFunctions = lookupFunctions; } ExpressionObserver.prototype.getValue = function getValue() { return this.expression.evaluate(this.scope, this.lookupFunctions); }; ExpressionObserver.prototype.setValue = function setValue(newValue) { this.expression.assign(this.scope, newValue); }; ExpressionObserver.prototype.subscribe = function subscribe(context, callable) { var _this = this; if (!this.hasSubscribers()) { this.oldValue = this.expression.evaluate(this.scope, this.lookupFunctions); this.expression.connect(this, this.scope); } this.addSubscriber(context, callable); if (arguments.length === 1 && context instanceof Function) { return { dispose: function dispose() { _this.unsubscribe(context, callable); } }; } }; ExpressionObserver.prototype.unsubscribe = function unsubscribe(context, callable) { if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) { this.unobserve(true); this.oldValue = undefined; } }; ExpressionObserver.prototype.call = function call() { var newValue = this.expression.evaluate(this.scope, this.lookupFunctions); var oldValue = this.oldValue; if (newValue !== oldValue) { this.oldValue = newValue; this.callSubscribers(newValue, oldValue); } this._version++; this.expression.connect(this, this.scope); this.unobserve(false); }; return ExpressionObserver; }()) || _class) || _class); function isIndex(s) { return +s === s >>> 0; } function toNumber(s) { return +s; } function newSplice(index, removed, addedCount) { return { index: index, removed: removed, addedCount: addedCount }; } var EDIT_LEAVE = 0; var EDIT_UPDATE = 1; var EDIT_ADD = 2; var EDIT_DELETE = 3; function ArraySplice() {} ArraySplice.prototype = { calcEditDistances: function calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd) { var rowCount = oldEnd - oldStart + 1; var columnCount = currentEnd - currentStart + 1; var distances = new Array(rowCount); var north = void 0; var west = void 0; for (var _i = 0; _i < rowCount; ++_i) { distances[_i] = new Array(columnCount); distances[_i][0] = _i; } for (var j = 0; j < columnCount; ++j) { distances[0][j] = j; } for (var _i2 = 1; _i2 < rowCount; ++_i2) { for (var _j = 1; _j < columnCount; ++_j) { if (this.equals(current[currentStart + _j - 1], old[oldStart + _i2 - 1])) { distances[_i2][_j] = distances[_i2 - 1][_j - 1]; } else { north = distances[_i2 - 1][_j] + 1; west = distances[_i2][_j - 1] + 1; distances[_i2][_j] = north < west ? north : west; } } } return distances; }, spliceOperationsFromEditDistances: function spliceOperationsFromEditDistances(distances) { var i = distances.length - 1; var j = distances[0].length - 1; var current = distances[i][j]; var edits = []; while (i > 0 || j > 0) { if (i === 0) { edits.push(EDIT_ADD); j--; continue; } if (j === 0) { edits.push(EDIT_DELETE); i--; continue; } var northWest = distances[i - 1][j - 1]; var west = distances[i - 1][j]; var north = distances[i][j - 1]; var min = void 0; if (west < north) { min = west < northWest ? west : northWest; } else { min = north < northWest ? north : northWest; } if (min === northWest) { if (northWest === current) { edits.push(EDIT_LEAVE); } else { edits.push(EDIT_UPDATE); current = northWest; } i--; j--; } else if (min === west) { edits.push(EDIT_DELETE); i--; current = west; } else { edits.push(EDIT_ADD); j--; current = north; } } edits.reverse(); return edits; }, calcSplices: function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) { var prefixCount = 0; var suffixCount = 0; var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart); if (currentStart === 0 && oldStart === 0) { prefixCount = this.sharedPrefix(current, old, minLength); } if (currentEnd === current.length && oldEnd === old.length) { suffixCount = this.sharedSuffix(current, old, minLength - prefixCount); } currentStart += prefixCount; oldStart += prefixCount; currentEnd -= suffixCount; oldEnd -= suffixCount; if (currentEnd - currentStart === 0 && oldEnd - oldStart === 0) { return []; } if (currentStart === currentEnd) { var _splice = newSplice(currentStart, [], 0); while (oldStart < oldEnd) { _splice.removed.push(old[oldStart++]); } return [_splice]; } else if (oldStart === oldEnd) { return [newSplice(currentStart, [], currentEnd - currentStart)]; } var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd)); var splice = undefined; var splices = []; var index = currentStart; var oldIndex = oldStart; for (var _i3 = 0; _i3 < ops.length; ++_i3) { switch (ops[_i3]) { case EDIT_LEAVE: if (splice) { splices.push(splice); splice = undefined; } index++; oldIndex++; break; case EDIT_UPDATE: if (!splice) { splice = newSplice(index, [], 0); } splice.addedCount++; index++; splice.removed.push(old[oldIndex]); oldIndex++; break; case EDIT_ADD: if (!splice) { splice = newSplice(index, [], 0); } splice.addedCount++; index++; break; case EDIT_DELETE: if (!splice) { splice = newSplice(index, [], 0); } splice.removed.push(old[oldIndex]); oldIndex++; break; } } if (splice) { splices.push(splice); } return splices; }, sharedPrefix: function sharedPrefix(current, old, searchLength) { for (var _i4 = 0; _i4 < searchLength; ++_i4) { if (!this.equals(current[_i4], old[_i4])) { return _i4; } } return searchLength; }, sharedSuffix: function sharedSuffix(current, old, searchLength) { var index1 = current.length; var index2 = old.length; var count = 0; while (count < searchLength && this.equals(current[--index1], old[--index2])) { count++; } return count; }, calculateSplices: function calculateSplices(current, previous) { return this.calcSplices(current, 0, current.length, previous, 0, previous.length); }, equals: function equals(currentValue, previousValue) { return currentValue === previousValue; } }; var arraySplice = new ArraySplice(); function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) { return arraySplice.calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd); } function intersect(start1, end1, start2, end2) { if (end1 < start2 || end2 < start1) { return -1; } if (end1 === start2 || end2 === start1) { return 0; } if (start1 < start2) { if (end1 < end2) { return end1 - start2; } return end2 - start2; } if (end2 < end1) { return end2 - start1; } return end1 - start1; } function mergeSplice(splices, index, removed, addedCount) { var splice = newSplice(index, removed, addedCount); var inserted = false; var insertionOffset = 0; for (var _i5 = 0; _i5 < splices.length; _i5++) { var current = splices[_i5]; current.index += insertionOffset; if (inserted) { continue; } var intersectCount = intersect(splice.index, splice.index + splice.removed.length, current.index, current.index + current.addedCount); if (intersectCount >= 0) { splices.splice(_i5, 1); _i5--; insertionOffset -= current.addedCount - current.removed.length; splice.addedCount += current.addedCount - intersectCount; var deleteCount = splice.removed.length + current.removed.length - intersectCount; if (!splice.addedCount && !deleteCount) { inserted = true; } else { var currentRemoved = current.removed; if (splice.index < current.index) { var prepend = splice.removed.slice(0, current.index - splice.index); Array.prototype.push.apply(prepend, currentRemoved); currentRemoved = prepend; } if (splice.index + splice.removed.length > current.index + current.addedCount) { var append = splice.removed.slice(current.index + current.addedCount - splice.index); Array.prototype.push.apply(currentRemoved, append); } splice.removed = currentRemoved; if (current.index < splice.index) { splice.index = current.index; } } } else if (splice.index < current.index) { inserted = true; splices.splice(_i5, 0, splice); _i5++; var offset = splice.addedCount - splice.removed.length; current.index += offset; insertionOffset += offset; } } if (!inserted) { splices.push(splice); } } function createInitialSplices(array, changeRecords) { var splices = []; for (var _i6 = 0; _i6 < changeRecords.length; _i6++) { var record = changeRecords[_i6]; switch (record.type) { case 'splice': mergeSplice(splices, record.index, record.removed.slice(), record.addedCount); break; case 'add': case 'update': case 'delete': if (!isIndex(record.name)) { continue; } var index = toNumber(record.name); if (index < 0) { continue; } mergeSplice(splices, index, [record.oldValue], record.type === 'delete' ? 0 : 1); break; default: console.error('Unexpected record type: ' + JSON.stringify(record)); break; } } return splices; } function projectArraySplices(array, changeRecords) { var splices = []; createInitialSplices(array, changeRecords).forEach(function (splice) { if (splice.addedCount === 1 && splice.removed.length === 1) { if (splice.removed[0] !== array[splice.index]) { splices.push(splice); } return; } splices = splices.concat(calcSplices(array, splice.index, splice.index + splice.addedCount, splice.removed, 0, splice.removed.length)); }); return splices; } function newRecord(type, object, key, oldValue) { return { type: type, object: object, key: key, oldValue: oldValue }; } function getChangeRecords(map) { var entries = new Array(map.size); var keys = map.keys(); var i = 0; var item = void 0; while (item = keys.next()) { if (item.done) { break; } entries[i] = newRecord('added', map, item.value); i++; } return entries; } var ModifyCollectionObserver = exports.ModifyCollectionObserver = (_dec3 = subscriberCollection(), _dec3(_class2 = function () { function ModifyCollectionObserver(taskQueue, collection) { this.taskQueue = taskQueue; this.queued = false; this.changeRecords = null; this.oldCollection = null; this.collection = collection; this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length'; } ModifyCollectionObserver.prototype.subscribe = function subscribe(context, callable) { this.addSubscriber(context, callable); }; ModifyCollectionObserver.prototype.unsubscribe = function unsubscribe(context, callable) { this.removeSubscriber(context, callable); }; ModifyCollectionObserver.prototype.addChangeRecord = function addChangeRecord(changeRecord) { if (!this.hasSubscribers() && !this.lengthObserver) { return; } if (changeRecord.type === 'splice') { var index = changeRecord.index; var arrayLength = changeRecord.object.length; if (index > arrayLength) { index = arrayLength - changeRecord.addedCount; } else if (index < 0) { index = arrayLength + changeRecord.removed.length + index - changeRecord.addedCount; } if (index < 0) { index = 0; } changeRecord.index = index; } if (this.changeRecords === null) { this.changeRecords = [changeRecord]; } else { this.changeRecords.push(changeRecord); } if (!this.queued) { this.queued = true; this.taskQueue.queueMicroTask(this); } }; ModifyCollectionObserver.prototype.flushChangeRecords = function flushChangeRecords() { if (this.changeRecords && this.changeRecords.length || this.oldCollection) { this.call(); } }; ModifyCollectionObserver.prototype.reset = function reset(oldCollection) { this.oldCollection = oldCollection; if (this.hasSubscribers() && !this.queued) { this.queued = true; this.taskQueue.queueMicroTask(this); } }; ModifyCollectionObserver.prototype.getLengthObserver = function getLengthObserver() { return this.lengthObserver || (this.lengthObserver = new CollectionLengthObserver(this.collection)); }; ModifyCollectionObserver.prototype.call = function call() { var changeRecords = this.changeRecords; var oldCollection = this.oldCollection; var records = void 0; this.queued = false; this.changeRecords = []; this.oldCollection = null; if (this.hasSubscribers()) { if (oldCollection) { if (this.collection instanceof Map || this.collection instanceof Set) { records = getChangeRecords(oldCollection); } else { records = calcSplices(this.collection, 0, this.collection.length, oldCollection, 0, oldCollection.length); } } else { if (this.collection instanceof Map || this.collection instanceof Set) { records = changeRecords; } else { records = projectArraySplices(this.collection, changeRecords); } } this.callSubscribers(records); } if (this.lengthObserver) { this.lengthObserver.call(this.collection[this.lengthPropertyName]); } }; return ModifyCollectionObserver; }()) || _class2); var CollectionLengthObserver = exports.CollectionLengthObserver = (_dec4 = subscriberCollection(), _dec4(_class3 = function () { function CollectionLengthObserver(collection) { this.collection = collection; this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length'; this.currentValue = collection[this.lengthPropertyName]; } CollectionLengthObserver.prototype.getValue = function getValue() { return this.collection[this.lengthPropertyName]; }; CollectionLengthObserver.prototype.setValue = function setValue(newValue) { this.collection[this.lengthPropertyName] = newValue; }; CollectionLengthObserver.prototype.subscribe = function subscribe(context, callable) { this.addSubscriber(context, callable); }; CollectionLengthObserver.prototype.unsubscribe = function unsubscribe(context, callable) { this.removeSubscriber(context, callable); }; CollectionLengthObserver.prototype.call = function call(newValue) { var oldValue = this.currentValue; this.callSubscribers(newValue, oldValue); this.currentValue = newValue; }; return CollectionLengthObserver; }()) || _class3); var pop = Array.prototype.pop; var push = Array.prototype.push; var reverse = Array.prototype.reverse; var shift = Array.prototype.shift; var sort = Array.prototype.sort; var splice = Array.prototype.splice; var unshift = Array.prototype.unshift; Array.prototype.pop = function () { var notEmpty = this.length > 0; var methodCallResult = pop.apply(this, arguments); if (notEmpty && this.__array_observer__ !== undefined) { this.__array_observer__.addChangeRecord({ type: 'delete', object: this, name: this.length, oldValue: methodCallResult }); } return methodCallResult; }; Array.prototype.push = function () { var methodCallResult = push.apply(this, arguments); if (this.__array_observer__ !== undefined) { this.__array_observer__.addChangeRecord({ type: 'splice', object: this, index: this.length - arguments.length, removed: [], addedCount: arguments.length }); } return methodCallResult; }; Array.prototype.reverse = function () { var oldArray = void 0; if (this.__array_observer__ !== undefined) { this.__array_observer__.flushChangeRecords(); oldArray = this.slice(); } var methodCallResult = reverse.apply(this, arguments); if (this.__array_observer__ !== undefined) { this.__array_observer__.reset(oldArray); } return methodCallResult; }; Array.prototype.shift = function () { var notEmpty = this.length > 0; var methodCallResult = shift.apply(this, arguments); if (notEmpty && this.__array_observer__ !== undefined) { this.__array_observer__.addChangeRecord({ type: 'delete', object: this, name: 0, oldValue: methodCallResult }); } return methodCallResult; }; Array.prototype.sort = function () { var oldArray = void 0; if (this.__array_observer__ !== undefined) { this.__array_observer__.flushChangeRecords(); oldArray = this.slice(); } var methodCallResult = sort.apply(this, arguments); if (this.__array_observer__ !== undefined) { this.__array_observer__.reset(oldArray); } return methodCallResult; }; Array.prototype.splice = function () { var methodCallResult = splice.apply(this, arguments); if (this.__array_observer__ !== undefined) { this.__array_observer__.addChangeRecord({ type: 'splice', object: this, index: +arguments[0], removed: methodCallResult, addedCount: arguments.length > 2 ? arguments.length - 2 : 0 }); } return methodCallResult; }; Array.prototype.unshift = function () { var methodCallResult = unshift.apply(this, arguments); if (this.__array_observer__ !== undefined) { this.__array_observer__.addChangeRecord({ type: 'splice', object: this, index: 0, removed: [], addedCount: arguments.length }); } return methodCallResult; }; function _getArrayObserver(taskQueue, array) { return ModifyArrayObserver.for(taskQueue, array); } exports.getArrayObserver = _getArrayObserver; var ModifyArrayObserver = function (_ModifyCollectionObse) { _inherits(ModifyArrayObserver, _ModifyCollectionObse); function ModifyArrayObserver(taskQueue, array) { return _possibleConstructorReturn(this, _ModifyCollectionObse.call(this, taskQueue, array)); } ModifyArrayObserver.for = function _for(taskQueue, array) { if (!('__array_observer__' in array)) { Reflect.defineProperty(array, '__array_observer__', { value: ModifyArrayObserver.create(taskQueue, array), enumerable: false, configurable: false }); } return array.__array_observer__; }; ModifyArrayObserver.create = function create(taskQueue, array) { return new ModifyArrayObserver(taskQueue, array); }; return ModifyArrayObserver; }(ModifyCollectionObserver); var Expression = exports.Expression = function () { function Expression() { this.isChain = false; this.isAssignable = false; } Expression.prototype.evaluate = function evaluate(scope, lookupFunctions, args) { throw new Error('Binding expression "' + this + '" cannot be evaluated.'); }; Expression.prototype.assign = function assign(scope, value, lookupFunctions) { throw new Error('Binding expression "' + this + '" cannot be assigned to.'); }; Expression.prototype.toString = function toString() { return typeof FEATURE_NO_UNPARSER === 'undefined' ? _Unparser.unparse(this) : Function.prototype.toString.call(this); }; return Expression; }(); var Chain = exports.Chain = function (_Expression) { _inherits(Chain, _Expression); function Chain(expressions) { var _this3 = _possibleConstructorReturn(this, _Expression.call(this)); _this3.expressions = expressions; _this3.isChain = true; return _this3; } Chain.prototype.evaluate = function evaluate(scope, lookupFunctions) { var result = void 0; var expressions = this.expressions; var last = void 0; for (var _i7 = 0, length = expressions.length; _i7 < length; ++_i7) { last = expressions[_i7].evaluate(scope, lookupFunctions); if (last !== null) { result = last; } } return result; }; Chain.prototype.accept = function accept(visitor) { return visitor.visitChain(this); }; return Chain; }(Expression); var BindingBehavior = exports.BindingBehavior = function (_Expression2) { _inherits(BindingBehavior, _Expression2); function BindingBehavior(expression, name, args) { var _this4 = _possibleConstructorReturn(this, _Expression2.call(this)); _this4.expression = expression; _this4.name = name; _this4.args = args; return _this4; } BindingBehavior.prototype.evaluate = function evaluate(scope, lookupFunctions) { return this.expression.evaluate(scope, lookupFunctions); }; BindingBehavior.prototype.assign = function assign(scope, value, lookupFunctions) { return this.expression.assign(scope, value, lookupFunctions); }; BindingBehavior.prototype.accept = function accept(visitor) { return visitor.visitBindingBehavior(this); }; BindingBehavior.prototype.connect = function connect(binding, scope) { this.expression.connect(binding, scope); }; BindingBehavior.prototype.bind = function bind(binding, scope, lookupFunctions) { if (this.expression.expression && this.expression.bind) { this.expression.bind(binding, scope, lookupFunctions); } var behavior = lookupFunctions.bindingBehaviors(this.name); if (!behavior) { throw new Error('No BindingBehavior named "' + this.name + '" was found!'); } var behaviorKey = 'behavior-' + this.name; if (binding[behaviorKey]) { throw new Error('A binding behavior named "' + this.name + '" has already been applied to "' + this.expression + '"'); } binding[behaviorKey] = behavior; behavior.bind.apply(behavior, [binding, scope].concat(evalList(scope, this.args, binding.lookupFunctions))); }; BindingBehavior.prototype.unbind = function unbind(binding, scope) { var behaviorKey = 'behavior-' + this.name; binding[behaviorKey].unbind(binding, scope); binding[behaviorKey] = null; if (this.expression.expression && this.expression.unbind) { this.expression.unbind(binding, scope); } }; return BindingBehavior; }(Expression); var ValueConverter = exports.ValueConverter = function (_Expression3) { _inherits(ValueConverter, _Expression3); function ValueConverter(expression, name, args, allArgs) { var _this5 = _possibleConstructorReturn(this, _Expression3.call(this)); _this5.expression = expression; _this5.name = name; _this5.args = args; _this5.allArgs = allArgs; return _this5; } ValueConverter.prototype.evaluate = function evaluate(scope, lookupFunctions) { var converter = lookupFunctions.valueConverters(this.name); if (!converter) { throw new Error('No ValueConverter named "' + this.name + '" was found!'); } if ('toView' in converter) { return converter.toView.apply(converter, evalList(scope, this.allArgs, lookupFunctions)); } return this.allArgs[0].evaluate(scope, lookupFunctions); }; ValueConverter.prototype.assign = function assign(scope, value, lookupFunctions) { var converter = lookupFunctions.valueConverters(this.name); if (!converter) { throw new Error('No ValueConverter named "' + this.name + '" was found!'); } if ('fromView' in converter) { value = converter.fromView.apply(converter, [value].concat(evalList(scope, this.args, lookupFunctions))); } return this.allArgs[0].assign(scope, value, lookupFunctions); }; ValueConverter.prototype.accept = function accept(visitor) { return visitor.visitValueConverter(this); }; ValueConverter.prototype.connect = function connect(binding, scope) { var expressions = this.allArgs; var i = expressions.length; while (i--) { expressions[i].connect(binding, scope); } var converter = binding.lookupFunctions.valueConverters(this.name); if (!converter) { throw new Error('No ValueConverter named "' + this.name + '" was found!'); } var signals = converter.signals; if (signals === undefined) { return; } i = signals.length; while (i--) { connectBindingToSignal(binding, signals[i]); } }; return ValueConverter; }(Expression); var Assign = exports.Assign = function (_Expression4) { _inherits(Assign, _Expression4); function Assign(target, value) { var _this6 = _possibleConstructorReturn(this, _Expression4.call(this)); _this6.target = target; _this6.value = value; _this6.isAssignable = true; return _this6; } Assign.prototype.evaluate = function evaluate(scope, lookupFunctions) { return this.target.assign(scope, this.value.evaluate(scope, lookupFunctions)); }; Assign.prototype.accept = function accept(vistor) { vistor.visitAssign(this); }; Assign.prototype.connect = function connect(binding, scope) {}; Assign.prototype.assign = function assign(scope, value) { this.value.assign(scope, value); this.target.assign(scope, value); }; return Assign; }(Expression); var Conditional = exports.Conditional = function (_Expression5) { _inherits(Conditional, _Expression5); function Conditional(condition, yes, no) { var _this7 = _possibleConstructorReturn(this, _Expression5.call(this)); _this7.condition = condition; _this7.yes = yes; _this7.no = no; return _this7; } Conditional.prototype.evaluate = function evaluate(scope, lookupFunctions) { return !!this.condition.evaluate(scope, lookupFunctions) ? this.yes.evaluate(scope, lookupFunctions) : this.no.evaluate(scope, lookupFunctions); }; Conditional.prototype.accept = function accept(visitor) { return visitor.visitConditional(this); }; Conditional.prototype.connect = function connect(binding, scope) { this.condition.connect(binding, scope); if (this.condition.evaluate(scope)) { this.yes.connect(binding, scope); } else { this.no.connect(binding, scope); } }; return Conditional; }(Expression); var AccessThis = exports.AccessThis = function (_Expression6) { _inherits(AccessThis, _Expression6); function AccessThis(ancestor) { var _this8 = _possibleConstructorReturn(this, _Expression6.call(this)); _this8.ancestor = ancestor; return _this8; } AccessThis.prototype.evaluate = function evaluate(scope, lookupFunctions) { var oc = scope.overrideContext; var i = this.ancestor; while (i-- && oc) { oc = oc.parentOverrideContext; } return i < 1 && oc ? oc.bindingContext : undefined; }; AccessThis.prototype.accept = function accept(visitor) { return visitor.visitAccessThis(this); }; AccessThis.prototype.connect = function connect(binding, scope) {}; return AccessThis; }(Expression); var AccessScope = exports.AccessScope = function (_Expression7) { _inherits(AccessScope, _Expression7); function AccessScope(name, ancestor) { var _this9 = _possibleConstructorReturn(this, _Expression7.call(this)); _this9.name = name; _this9.ancestor = ancestor; _this9.isAssignable = true; return _this9; } AccessScope.prototype.evaluate = function evaluate(scope, lookupFunctions) { var context = getContextFor(this.name, scope, this.ancestor); return context[this.name]; }; AccessScope.prototype.assign = function assign(scope, value) { var context = getContextFor(this.name, scope, this.ancestor); return context ? context[this.name] = value : undefined; }; AccessScope.prototype.accept = function accept(visitor) { return visitor.visitAccessScope(this); }; AccessScope.prototype.connect = function connect(binding, scope) { var context = getContextFor(this.name, scope, this.ancestor); binding.observeProperty(context, this.name); }; return AccessScope; }(Expression); var AccessMember = exports.AccessMember = function (_Expression8) { _inherits(AccessMember, _Expression8); function AccessMember(object, name) { var _this10 = _possibleConstructorReturn(this, _Expression8.call(this)); _this10.object = object; _this10.name = name; _this10.isAssignable = true; return _this10; } AccessMember.prototype.evaluate = function evaluate(scope, lookupFunctions) { var instance = this.object.evaluate(scope, lookupFunctions); return instance === null || instance === undefined ? instance : instance[this.name]; }; AccessMember.prototype.assign = function assign(scope, value) { var instance = this.object.evaluate(scope); if (instance === null || instance === undefined) { instance = {}; this.object.assign(scope, instance); } instance[this.name] = value; return value; }; AccessMember.prototype.accept = function accept(visitor) { return visitor.visitAccessMember(this); }; AccessMember.prototype.connect = function connect(binding, scope) { this.object.connect(binding, scope); var obj = this.object.evaluate(scope); if (obj) { binding.observeProperty(obj, this.name); } }; return AccessMember; }(Expression); var AccessKeyed = exports.AccessKeyed = function (_Expression9) { _inherits(AccessKeyed, _Expression9); function AccessKeyed(object, key) { var _this11 = _possibleConstructorReturn(this, _Expression9.call(this)); _this11.object = object; _this11.key = key; _this11.isAssignable = true; return _this11; } AccessKeyed.prototype.evaluate = function evaluate(scope, lookupFunctions) { var instance = this.object.evaluate(scope, lookupFunctions); var lookup = this.key.evaluate(scope, lookupFunctions); return getKeyed(instance, lookup); }; AccessKeyed.prototype.assign = function assign(scope, value) { var instance = this.object.evaluate(scope); var lookup = this.key.evaluate(scope); return setKeyed(instance, lookup, value); }; AccessKeyed.prototype.accept = function accept(visitor) { return visitor.visitAccessKeyed(this); }; AccessKeyed.prototype.connect = function connect(binding, scope) { this.object.connect(binding, scope); var obj = this.object.evaluate(scope); if (obj instanceof Object) { this.key.connect(binding, scope); var key = this.key.evaluate(scope); if (key !== null && key !== undefined && !(Array.isArray(obj) && typeof key === 'number')) { binding.observeProperty(obj, key); } } }; return AccessKeyed; }(Expression); var CallScope = exports.CallScope = function (_Expression10) { _inherits(CallScope, _Expression10); function CallScope(name, args, ancestor) { var _this12 = _possibleConstructorReturn(this, _Expression10.call(this)); _this12.name = name; _this12.args = args; _this12.ancestor = ancestor; return _this12; } CallScope.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) { var args = evalList(scope, this.args, lookupFunctions); var context = getContextFor(this.name, scope, this.ancestor); var func = getFunction(context, this.name, mustEvaluate); if (func) { return func.apply(context, args); } return undefined; }; CallScope.prototype.accept = function accept(visitor) { return visitor.visitCallScope(this); }; CallScope.prototype.connect = function connect(binding, scope) { var args = this.args; var i = args.length; while (i--) { args[i].connect(binding, scope); } }; return CallScope; }(Expression); var CallMember = exports.CallMember = function (_Expression11) { _inherits(CallMember, _Expression11); function CallMember(object, name, args) { var _this13 = _possibleConstructorReturn(this, _Expression11.call(this)); _this13.object = object; _this13.name = name; _this13.args = args; return _this13; } CallMember.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) { var instance = this.object.evaluate(scope, lookupFunctions); var args = evalList(scope, this.args, lookupFunctions); var func = getFunction(instance, this.name, mustEvaluate); if (func) { return func.apply(instance, args); } return undefined; }; CallMember.prototype.accept = function accept(visitor) { return visitor.visitCallMember(this); }; CallMember.prototype.connect = function connect(binding, scope) { this.object.connect(binding, scope); var obj = this.object.evaluate(scope); if (getFunction(obj, this.name, false)) { var args = this.args; var _i8 = args.length; while (_i8--) { args[_i8].connect(binding, scope); } } }; return CallMember; }(Expression); var CallFunction = exports.CallFunction = function (_Expression12) { _inherits(CallFunction, _Expression12); function CallFunction(func, args) { var _this14 = _possibleConstructorReturn(this, _Expression12.call(this)); _this14.func = func; _this14.args = args; return _this14; } CallFunction.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) { var func = this.func.evaluate(scope, lookupFunctions); if (typeof func === 'function') { return func.apply(null, evalList(scope, this.args, lookupFunctions)); } if (!mustEvaluate && (func === null || func === undefined)) { return undefined; } throw new Error(this.func + ' is not a function'); }; CallFunction.prototype.accept = function accept(visitor) { return visitor.visitCallFunction(this); }; CallFunction.prototype.connect = function connect(binding, scope) { this.func.connect(binding, scope); var func = this.func.evaluate(scope); if (typeof func === 'function') { var args = this.args; var _i9 = args.length; while (_i9--) { args[_i9].connect(binding, scope); } } }; return CallFunction; }(Expression); var Binary = exports.Binary = function (_Expression13) { _inherits(Binary, _Expression13); function Binary(operation, left, right) { var _this15 = _possibleConstructorReturn(this, _Expression13.call(this)); _this15.operation = operation; _this15.left = left; _this15.right = right; return _this15; } Binary.prototype.evaluate = function evaluate(scope, lookupFunctions) { var left = this.left.evaluate(scope, lookupFunctions); switch (this.operation) { case '&&': return left && this.right.evaluate(scope, lookupFunctions); case '||': return left || this.right.evaluate(scope, lookupFunctions); } var right = this.right.evaluate(scope, lookupFunctions); switch (this.operation) { case '==': return left == right; case '===': return left === right; case '!=': return left != right; case '!==': return left !== right; } if (left === null || right === null || left === undefined || right === undefined) { switch (this.operation) { case '+': if (left !== null && left !== undefined) return left; if (right !== null && right !== undefined) return right; return 0; case '-': if (left !== null && left !== undefined) return left; if (right !== null && right !== undefined) return 0 - right; return 0; } return null; } switch (this.operation) { case '+': return autoConvertAdd(left, right); case '-': return left - right; case '*': return left * right; case '/': return left / right; case '%': return left % right; case '<': return left < right; case '>': return left > right; case '<=': return left <= right; case '>=': return left >= right; case '^': return left ^ right; } throw new Error('Internal error [' + this.operation + '] not handled'); }; Binary.prototype.accept = function accept(visitor) { return visitor.visitBinary(this); }; Binary.prototype.connect = function connect(binding, scope) { this.left.connect(binding, scope); var left = this.left.evaluate(scope); if (this.operation === '&&' && !left || this.operation === '||' && left) { return; } this.right.connect(binding, scope); }; return Binary; }(Expression); var PrefixNot = exports.PrefixNot = function (_Expression14) { _inherits(PrefixNot, _Expression14); function PrefixNot(operation, expression) { var _this16 = _possibleConstructorReturn(this, _Expression14.call(this)); _this16.operation = operation; _this16.expression = expression; return _this16; } PrefixNot.prototype.evaluate = function evaluate(scope, lookupFunctions) { return !this.expression.evaluate(scope, lookupFunctions); }; PrefixNot.prototype.accept = function accept(visitor) { return visitor.visitPrefix(this); }; PrefixNot.prototype.connect = function connect(binding, scope) { this.expression.connect(binding, scope); }; return PrefixNot; }(Expression); var LiteralPrimitive = exports.LiteralPrimitive = function (_Expression15) { _inherits(LiteralPrimitive, _Expression15); function LiteralPrimitive(value) { var _this17 = _possibleConstructorReturn(this, _Expression15.call(this)); _this17.value = value; return _this17; } LiteralPrimitive.prototype.evaluate = function evaluate(scope, lookupFunctions) { return this.value; }; LiteralPrimitive.prototype.accept = function accept(visitor) { return visitor.visitLiteralPrimitive(this); }; LiteralPrimitive.prototype.connect = function connect(binding, scope) {}; return LiteralPrimitive; }(Expression); var LiteralString = exports.LiteralString = function (_Expression16) { _inherits(LiteralString, _Expression16); function LiteralString(value) { var _this18 = _possibleConstructorReturn(this, _Expression16.call(this)); _this18.value = value; return _this18; } LiteralString.prototype.evaluate = function evaluate(scope, lookupFunctions) { return this.value; }; LiteralString.prototype.accept = function accept(visitor) { return visitor.visitLiteralString(this); }; LiteralString.prototype.connect = function connect(binding, scope) {}; return LiteralString; }(Expression); var LiteralArray = exports.LiteralArray = function (_Expression17) { _inherits(LiteralArray, _Expression17); function LiteralArray(elements) { var _this19 = _possibleConstructorReturn(this, _Expression17.call(this)); _this19.elements = elements; return _this19; } LiteralArray.prototype.evaluate = function evaluate(scope, lookupFunctions) { var elements = this.elements; var result = []; for (var _i10 = 0, length = elements.length; _i10 < length; ++_i10) { result[_i10] = elements[_i10].evaluate(scope, lookupFunctions); } return result; }; LiteralArray.prototype.accept = function accept(visitor) { return visitor.visitLiteralArray(this); }; LiteralArray.prototype.connect = function connect(binding, scope) { var length = this.elements.length; for (var _i11 = 0; _i11 < length; _i11++) { this.elements[_i11].connect(binding, scope); } }; return LiteralArray; }(Expression); var LiteralObject = exports.LiteralObject = function (_Expression18) { _inherits(LiteralObject, _Expression18); function LiteralObject(keys, values) { var _this20 = _possibleConstructorReturn(this, _Expression18.call(this)); _this20.keys = keys; _this20.values = values; return _this20; } LiteralObject.prototype.evaluate = function evaluate(scope, lookupFunctions) { var instance = {}; var keys = this.keys; var values = this.values; for (var _i12 = 0, length = keys.length; _i12 < length; ++_i12) { instance[keys[_i12]] = values[_i12].evaluate(scope, lookupFunctions); } return instance; }; LiteralObject.prototype.accept = function accept(visitor) { return visitor.visitLiteralObject(this); }; LiteralObject.prototype.connect = function connect(binding, scope) { var length = this.keys.length; for (var _i13 = 0; _i13 < length; _i13++) { this.values[_i13].connect(binding, scope); } }; return LiteralObject; }(Expression); function evalList(scope, list, lookupFunctions) { var length = list.length; var result = []; for (var _i14 = 0; _i14 < length; _i14++) { result[_i14] = list[_i14].evaluate(scope, lookupFunctions); } return result; } function autoConvertAdd(a, b) { if (a !== null && b !== null) { if (typeof a === 'string' && typeof b !== 'string') { return a + b.toString(); } if (typeof a !== 'string' && typeof b === 'string') { return a.toString() + b; } return a + b; } if (a !== null) { return a; } if (b !== null) { return b; } return 0; } function getFunction(obj, name, mustExist) { var func = obj === null || obj === undefined ? null : obj[name]; if (typeof func === 'function') { return func; } if (!mustExist && (func === null || func === undefined)) { return null; } throw new Error(name + ' is not a function'); } function getKeyed(obj, key) { if (Array.isArray(obj)) { return obj[parseInt(key, 10)]; } else if (obj) { return obj[key]; } else if (obj === null || obj === undefined) { return undefined; } return obj[key]; } function setKeyed(obj, key, value) { if (Array.isArray(obj)) { var index = parseInt(key, 10); if (obj.length <= index) { obj.length = index + 1; } obj[index] = value; } else { obj[key] = value; } return value; } var _Unparser = null; exports.Unparser = _Unparser; if (typeof FEATURE_NO_UNPARSER === 'undefined') { exports.Unparser = _Unparser = function () { function Unparser(buffer) { this.buffer = buffer; } Unparser.unparse = function unparse(expression) { var buffer = []; var visitor = new _Unparser(buffer); expression.accept(visitor); return buffer.join(''); }; Unparser.prototype.write = function write(text) { this.buffer.push(text); }; Unparser.prototype.writeArgs = function writeArgs(args) { this.write('('); for (var _i15 = 0, length = args.length; _i15 < length; ++_i15) { if (_i15 !== 0) { this.write(','); } args[_i15].accept(this); } this.write(')'); }; Unparser.prototype.visitChain = function visitChain(chain) { var expressions = chain.expressions; for (var _i16 = 0, length = expression.length; _i16 < length; ++_i16) { if (_i16 !== 0) { this.write(';'); } expressions[_i16].accept(this); } }; Unparser.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) { var args = behavior.args; behavior.expression.accept(this); this.write('&' + behavior.name); for (var _i17 = 0, length = args.length; _i17 < length; ++_i17) { this.write(':'); args[_i17].accept(this); } }; Unparser.prototype.visitValueConverter = function visitValueConverter(converter) { var args = converter.args; converter.expression.accept(this); this.write('|' + converter.name); for (var _i18 = 0, length = args.length; _i18 < length; ++_i18) { this.write(':'); args[_i18].accept(this); } }; Unparser.prototype.visitAssign = function visitAssign(assign) { assign.target.accept(this); this.write('='); assign.value.accept(this); }; Unparser.prototype.visitConditional = function visitConditional(conditional) { conditional.condition.accept(this); this.write('?'); conditional.yes.accept(this); this.write(':'); conditional.no.accept(this); }; Unparser.prototype.visitAccessThis = function visitAccessThis(access) { if (access.ancestor === 0) { this.write('$this'); return; } this.write('$parent'); var i = access.ancestor - 1; while (i--) { this.write('.$parent'); } }; Unparser.prototype.visitAccessScope = function visitAccessScope(access) { var i = access.ancestor; while (i--) { this.write('$parent.'); } this.write(access.name); }; Unparser.prototype.visitAccessMember = function visitAccessMember(access) { access.object.accept(this); this.write('.' + access.name); }; Unparser.prototype.visitAccessKeyed = function visitAccessKeyed(access) { access.object.accept(this); this.write('['); access.key.accept(this); this.write(']'); }; Unparser.prototype.visitCallScope = function visitCallScope(call) { var i = call.ancestor; while (i--) { this.write('$parent.'); } this.write(call.name); this.writeArgs(call.args); }; Unparser.prototype.visitCallFunction = function visitCallFunction(call) { call.func.accept(this); this.writeArgs(call.args); }; Unparser.prototype.visitCallMember = function visitCallMember(call) { call.object.accept(this); this.write('.' + call.name); this.writeArgs(call.args); }; Unparser.prototype.visitPrefix = function visitPrefix(prefix) { this.write('(' + prefix.operation); prefix.expression.accept(this); this.write(')'); }; Unparser.prototype.visitBinary = function visitBinary(binary) { binary.left.accept(this); this.write(binary.operation); binary.right.accept(this); }; Unparser.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) { this.write('' + literal.value); }; Unparser.prototype.visitLiteralArray = function visitLiteralArray(literal) { var elements = literal.elements; this.write('['); for (var _i19 = 0, length = elements.length; _i19 < length; ++_i19) { if (_i19 !== 0) { this.write(','); } elements[_i19].accept(this); } this.write(']'); }; Unparser.prototype.visitLiteralObject = function visitLiteralObject(literal) { var keys = literal.keys; var values = literal.values; this.write('{'); for (var _i20 = 0, length = keys.length; _i20 < length; ++_i20) { if (_i20 !== 0) { this.write(','); } this.write('\'' + keys[_i20] + '\':'); values[_i20].accept(this); } this.write('}'); }; Unparser.prototype.visitLiteralString = function visitLiteralString(literal) { var escaped = literal.value.replace(/'/g, "\'"); this.write('\'' + escaped + '\''); }; return Unparser; }(); } var ExpressionCloner = exports.ExpressionCloner = function () { function ExpressionCloner() { } ExpressionCloner.prototype.cloneExpressionArray = function cloneExpressionArray(array) { var clonedArray = []; var i = array.length; while (i--) { clonedArray[i] = array[i].accept(this); } return clonedArray; }; ExpressionCloner.prototype.visitChain = function visitChain(chain) { return new Chain(this.cloneExpressionArray(chain.expressions)); }; ExpressionCloner.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) { return new BindingBehavior(behavior.expression.accept(this), behavior.name, this.cloneExpressionArray(behavior.args)); }; ExpressionCloner.prototype.visitValueConverter = function visitValueConverter(converter) { return new ValueConverter(converter.expression.accept(this), converter.name, this.cloneExpressionArray(converter.args)); }; ExpressionCloner.prototype.visitAssign = function visitAssign(assign) { return new Assign(assign.target.accept(this), assign.value.accept(this)); }; ExpressionCloner.prototype.visitConditional = function visitConditional(conditional) { return new Conditional(conditional.condition.accept(this), conditional.yes.accept(this), conditional.no.accept(this)); }; ExpressionCloner.prototype.visitAccessThis = function visitAccessThis(access) { return new AccessThis(access.ancestor); }; ExpressionCloner.prototype.visitAccessScope = function visitAccessScope(access) { return new AccessScope(access.name, access.ancestor); }; ExpressionCloner.prototype.visitAccessMember = function visitAccessMember(access) { return new AccessMember(access.object.accept(this), access.name); }; ExpressionCloner.prototype.visitAccessKeyed = function visitAccessKeyed(access) { return new AccessKeyed(access.object.accept(this), access.key.accept(this)); }; ExpressionCloner.prototype.visitCallScope = function visitCallScope(call) { return new CallScope(call.name, this.cloneExpressionArray(call.args), call.ancestor); }; ExpressionCloner.prototype.visitCallFunction = function visitCallFunction(call) { return new CallFunction(call.func.accept(this), this.cloneExpressionArray(call.args)); }; ExpressionCloner.prototype.visitCallMember = function visitCallMember(call) { return new CallMember(call.object.accept(this), call.name, this.cloneExpressionArray(call.args)); }; ExpressionCloner.prototype.visitPrefix = function visitPrefix(prefix) { return new PrefixNot(prefix.operation, prefix.expression.accept(this)); }; ExpressionCloner.prototype.visitBinary = function visitBinary(binary) { return new Binary(binary.operation, binary.left.accept(this), binary.right.accept(this)); }; ExpressionCloner.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) { return new LiteralPrimitive(literal); }; ExpressionCloner.prototype.visitLiteralArray = function visitLiteralArray(literal) { return new LiteralArray(this.cloneExpressionArray(literal.elements)); }; ExpressionCloner.prototype.visitLiteralObject = function visitLiteralObject(literal) { return new LiteralObject(literal.keys, this.cloneExpressionArray(literal.values)); }; ExpressionCloner.prototype.visitLiteralString = function visitLiteralString(literal) { return new LiteralString(literal.value); }; return ExpressionCloner; }(); function cloneExpression(expression) { var visitor = new ExpressionCloner(); return expression.accept(visitor); } var bindingMode = exports.bindingMode = { oneTime: 0, toView: 1, oneWay: 1, twoWay: 2, fromView: 3 }; var Token = exports.Token = function () { function Token(index, text) { this.index = index; this.text = text; } Token.prototype.withOp = function withOp(op) { this.opKey = op; return this; }; Token.prototype.withGetterSetter = function withGetterSetter(key) { this.key = key; return this; }; Token.prototype.withValue = function withValue(value) { this.value = value; return this; }; Token.prototype.toString = function toString() { return 'Token(' + this.text + ')'; }; return Token; }(); var Lexer = exports.Lexer = function () { function Lexer() { } Lexer.prototype.lex = function lex(text) { var scanner = new Scanner(text); var tokens = []; var token = scanner.scanToken(); while (token) { tokens.push(token); token = scanner.scanToken(); } return tokens; }; return Lexer; }(); var Scanner = exports.Scanner = function () { function Scanner(input) { this.input = input; this.length = input.length; this.peek = 0; this.index = -1; this.advance(); } Scanner.prototype.scanToken = function scanToken() { while (this.peek <= $SPACE) { if (++this.index >= this.length) { this.peek = $EOF; return null; } this.peek = this.input.charCodeAt(this.index); } if (isIdentifierStart(this.peek)) { return this.scanIdentifier(); } if (isDigit(this.peek)) { return this.scanNumber(this.index); } var start = this.index; switch (this.peek) { case $PERIOD: this.advance(); return isDigit(this.peek) ? this.scanNumber(start) : new Token(start, '.'); case $LPAREN: case $RPAREN: case $LBRACE: case $RBRACE: case $LBRACKET: case $RBRACKET: case $COMMA: case $COLON: case $SEMICOLON: return this.scanCharacter(start, String.fromCharCode(this.peek)); case $SQ: case $DQ: return this.scanString(); case $PLUS: case $MINUS: case $STAR: case $SLASH: case $PERCENT: case $CARET: case $QUESTION: return this.scanOperator(start, String.fromCharCode(this.peek)); case $LT: case $GT: case $BANG: case $EQ: return this.scanComplexOperator(start, $EQ, String.fromCharCode(this.peek), '='); case $AMPERSAND: return this.scanComplexOperator(start, $AMPERSAND, '&', '&'); case $BAR: return this.scanComplexOperator(start, $BAR, '|', '|'); case $NBSP: while (isWhitespace(this.peek)) { this.advance(); } return this.scanToken(); } var character = String.fromCharCode(this.peek); this.error('Unexpected character [' + character + ']'); return null; }; Scanner.prototype.scanCharacter = function scanCharacter(start, text) { assert(this.peek === text.charCodeAt(0)); this.advance(); return new Token(start, text); }; Scanner.prototype.scanOperator = function scanOperator(start, text) { assert(this.peek === text.charCodeAt(0)); assert(OPERATORS.indexOf(text) !== -1); this.advance(); return new Token(start, text).withOp(text); }; Scanner.prototype.scanComplexOperator = function scanComplexOperator(start, code, one, two) { assert(this.peek === one.charCodeAt(0)); this.advance(); var text = one; if (this.peek === code) { this.advance(); text += two; } if (this.peek === code) { this.advance(); text += two; } assert(OPERATORS.indexOf(text) !== -1); return new Token(start, text).withOp(text); }; Scanner.prototype.scanIdentifier = function scanIdentifier() { assert(isIdentifierStart(this.peek)); var start = this.index; this.advance(); while (isIdentifierPart(this.peek)) { this.advance(); } var text = this.input.substring(start, this.index); var result = new Token(start, text); if (OPERATORS.indexOf(text) !== -1) { result.withOp(text); } else { result.withGetterSetter(text); } return result; }; Scanner.prototype.scanNumber = function scanNumber(start) { assert(isDigit(this.peek)); var simple = this.index === start; this.advance(); while (true) { if (!isDigit(this.peek)) { if (this.peek === $PERIOD) { simple = false; } else if (isExponentStart(this.peek)) { this.advance(); if (isExponentSign(this.peek)) { this.advance(); } if (!isDigit(this.peek)) { this.error('Invalid exponent', -1); } simple = false; } else { break; } } this.advance(); } var text = this.input.substring(start, this.index); var value = simple ? parseInt(text, 10) : parseFloat(text); return new Token(start, text).withValue(value); }; Scanner.prototype.scanString = function scanString() { assert(this.peek === $SQ || this.peek === $DQ); var start = this.index; var quote = this.peek; this.advance(); var buffer = void 0; var marker = this.index; while (this.peek !== quote) { if (this.peek === $BACKSLASH) { if (!buffer) { buffer = []; } buffer.push(this.input.substring(marker, this.index)); this.advance(); var _unescaped = void 0; if (this.peek === $u) { var hex = this.input.substring(this.index + 1, this.index + 5); if (!/[A-Z0-9]{4}/.test(hex)) { this.error('Invalid unicode escape [\\u' + hex + ']'); } _unescaped = parseInt(hex, 16); for (var _i21 = 0; _i21 < 5; ++_i21) { this.advance(); } } else { _unescaped = unescape(this.peek); this.advance(); } buffer.push(String.fromCharCode(_unescaped)); marker = this.index; } else if (this.peek === $EOF) { this.error('Unterminated quote'); } else { this.advance(); } } var last = this.input.substring(marker, this.index); this.advance(); var text = this.input.substring(start, this.index); var unescaped = last; if (buffer !== null && buffer !== undefined) { buffer.push(last); unescaped = buffer.join(''); } return new Token(start, text).withValue(unescaped); }; Scanner.prototype.advance = function advance() { if (++this.index >= this.length) { this.peek = $EOF; } else { this.peek = this.input.charCodeAt(this.index); } }; Scanner.prototype.error = function error(message) { var offset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; var position = this.index + offset; throw new Error('Lexer Error: ' + message + ' at column ' + position + ' in expression [' + this.input + ']'); }; return Scanner; }(); var OPERATORS = ['undefined', 'null', 'true', 'false', '+', '-', '*', '/', '%', '^', '=', '==', '===', '!=', '!==', '<', '>', '<=', '>=', '&&', '||', '&', '|', '!', '?']; var $EOF = 0; var $TAB = 9; var $LF = 10; var $VTAB = 11; var $FF = 12; var $CR = 13; var $SPACE = 32; var $BANG = 33; var $DQ = 34; var $$ = 36; var $PERCENT = 37; var $AMPERSAND = 38; var $SQ = 39; var $LPAREN = 40; var $RPAREN = 41; var $STAR = 42; var $PLUS = 43; var $COMMA = 44; var $MINUS = 45; var $PERIOD = 46; var $SLASH = 47; var $COLON = 58; var $SEMICOLON = 59; var $LT = 60; var $EQ = 61; var $GT = 62; var $QUESTION = 63; var $0 = 48; var $9 = 57; var $A = 65; var $E = 69; var $Z = 90; var $LBRACKET = 91; var $BACKSLASH = 92; var $RBRACKET = 93; var $CARET = 94; var $_ = 95; var $a = 97; var $e = 101; var $f = 102; var $n = 110; var $r = 114; var $t = 116; var $u = 117; var $v = 118; var $z = 122; var $LBRACE = 123; var $BAR = 124; var $RBRACE = 125; var $NBSP = 160; function isWhitespace(code) { return code >= $TAB && code <= $SPACE || code === $NBSP; } function isIdentifierStart(code) { return $a <= code && code <= $z || $A <= code && code <= $Z || code === $_ || code === $$; } function isIdentifierPart(code) { return $a <= code && code <= $z || $A <= code && code <= $Z || $0 <= code && code <= $9 || code === $_ || code === $$; } function isDigit(code) { return $0 <= code && code <= $9; } function isExponentStart(code) { return code === $e || code === $E; } function isExponentSign(code) { return code === $MINUS || code === $PLUS; } function unescape(code) { switch (code) { case $n: return $LF; case $f: return $FF; case $r: return $CR; case $t: return $TAB; case $v: return $VTAB; default: return code; } } function assert(condition, message) { if (!condition) { throw message || 'Assertion failed'; } } var EOF = new Token(-1, null); var Parser = exports.Parser = function () { function Parser() { this.cache = {}; this.lexer = new Lexer(); } Parser.prototype.parse = function parse(input) { input = input || ''; return this.cache[input] || (this.cache[input] = new ParserImplementation(this.lexer, input).parseChain()); }; return Parser; }(); var ParserImplementation = exports.ParserImplementation = function () { function ParserImplementation(lexer, input) { this.index = 0; this.input = input; this.tokens = lexer.lex(input); } ParserImplementation.prototype.parseChain = function parseChain() { var isChain = false; var expressions = []; while (this.optional(';')) { isChain = true; } while (this.index < this.tokens.length) { if (this.peek.text === ')' || this.peek.text === '}' || this.peek.text === ']') { this.error('Unconsumed token ' + this.peek.text); } var expr = this.parseBindingBehavior(); expressions.push(expr); while (this.optional(';')) { isChain = true; } if (isChain) { this.error('Multiple expressions are not allowed.'); } } return expressions.length === 1 ? expressions[0] : new Chain(expressions); }; ParserImplementation.prototype.parseBindingBehavior = function parseBindingBehavior() { var result = this.parseValueConverter(); while (this.optional('&')) { var name = this.peek.text; var args = []; this.advance(); while (this.optional(':')) { args.push(this.parseExpression()); } result = new BindingBehavior(result, name, args); } return result; }; ParserImplementation.prototype.parseValueConverter = function parseValueConverter() { var result = this.parseExpression(); while (this.optional('|')) { var name = this.peek.text; var args = []; this.advance(); while (this.optional(':')) { args.push(this.parseExpression()); } result = new ValueConverter(result, name, args, [result].concat(args)); } return result; }; ParserImplementation.prototype.parseExpression = function parseExpression() { var start = this.peek.index; var result = this.parseConditional(); while (this.peek.text === '=') { if (!result.isAssignable) { var end = this.index < this.tokens.length ? this.peek.index : this.input.length; var _expression = this.input.substring(start, end); this.error('Expression ' + _expression + ' is not assignable'); } this.expect('='); result = new Assign(result, this.parseConditional()); } return result; }; ParserImplementation.prototype.parseConditional = function parseConditional() { var start = this.peek.index; var result = this.parseLogicalOr(); if (this.optional('?')) { var yes = this.parseExpression(); if (!this.optional(':')) { var end = this.index < this.tokens.length ? this.peek.index : this.input.length; var _expression2 = this.input.substring(start, end); this.error('Conditional expression ' + _expression2 + ' requires all 3 expressions'); } var no = this.parseExpression(); result = new Conditional(result, yes, no); } return result; }; ParserImplementation.prototype.parseLogicalOr = function parseLogicalOr() { var result = this.parseLogicalAnd(); while (this.optional('||')) { result = new Binary('||', result, this.parseLogicalAnd()); } return result; }; ParserImplementation.prototype.parseLogicalAnd = function parseLogicalAnd() { var result = this.parseEquality(); while (this.optional('&&')) { result = new Binary('&&', result, this.parseEquality()); } return result; }; ParserImplementation.prototype.parseEquality = function parseEquality() { var result = this.parseRelational(); while (true) { if (this.optional('==')) { result = new Binary('==', result, this.parseRelational()); } else if (this.optional('!=')) { result = new Binary('!=', result, this.parseRelational()); } else if (this.optional('===')) { result = new Binary('===', result, this.parseRelational()); } else if (this.optional('!==')) { result = new Binary('!==', result, this.parseRelational()); } else { return result; } } }; ParserImplementation.prototype.parseRelational = function parseRelational() { var result = this.parseAdditive(); while (true) { if (this.optional('<')) { result = new Binary('<', result, this.parseAdditive()); } else if (this.optional('>')) { result = new Binary('>', result, this.parseAdditive()); } else if (this.optional('<=')) { result = new Binary('<=', result, this.parseAdditive()); } else if (this.optional('>=')) { result = new Binary('>=', result, this.parseAdditive()); } else { return result; } } }; ParserImplementation.prototype.parseAdditive = function parseAdditive() { var result = this.parseMultiplicative(); while (true) { if (this.optional('+')) { result = new Binary('+', result, this.parseMultiplicative()); } else if (this.optional('-')) { result = new Binary('-', result, this.parseMultiplicative()); } else { return result; } } }; ParserImplementation.prototype.parseMultiplicative = function parseMultiplicative() { var result = this.parsePrefix(); while (true) { if (this.optional('*')) { result = new Binary('*', result, this.parsePrefix()); } else if (this.optional('%')) { result = new Binary('%', result, this.parsePrefix()); } else if (this.optional('/')) { result = new Binary('/', result, this.parsePrefix()); } else { return result; } } }; ParserImplementation.prototype.parsePrefix = function parsePrefix() { if (this.optional('+')) { return this.parsePrefix(); } else if (this.optional('-')) { return new Binary('-', new LiteralPrimitive(0), this.parsePrefix()); } else if (this.optional('!')) { return new PrefixNot('!', this.parsePrefix()); } return this.parseAccessOrCallMember(); }; ParserImplementation.prototype.parseAccessOrCallMember = function parseAccessOrCallMember() { var result = this.parsePrimary(); while (true) { if (this.optional('.')) { var name = this.peek.text; this.advance(); if (this.optional('(')) { var args = this.parseExpressionList(')'); this.expect(')'); if (result instanceof AccessThis) { result = new CallScope(name, args, result.ancestor); } else { result = new CallMember(result, name, args); } } else { if (result instanceof AccessThis) { result = new AccessScope(name, result.ancestor); } else { result = new AccessMember(result, name); } } } else if (this.optional('[')) { var key = this.parseExpression(); this.expect(']'); result = new AccessKeyed(result, key); } else if (this.optional('(')) { var _args = this.parseExpressionList(')'); this.expect(')'); result = new CallFunction(result, _args); } else { return result; } } }; ParserImplementation.prototype.parsePrimary = function parsePrimary() { if (this.optional('(')) { var result = this.parseExpression(); this.expect(')'); return result; } else if (this.optional('null')) { return new LiteralPrimitive(null); } else if (this.optional('undefined')) { return new LiteralPrimitive(undefined); } else if (this.optional('true')) { return new LiteralPrimitive(true); } else if (this.optional('false')) { return new LiteralPrimitive(false); } else if (this.optional('[')) { var elements = this.parseExpressionList(']'); this.expect(']'); return new LiteralArray(elements); } else if (this.peek.text === '{') { return this.parseObject(); } else if (this.peek.key !== null && this.peek.key !== undefined) { return this.parseAccessOrCallScope(); } else if (this.peek.value !== null && this.peek.value !== undefined) { var value = this.peek.value; this.advance(); return value instanceof String || typeof value === 'string' ? new LiteralString(value) : new LiteralPrimitive(value); } else if (this.index >= this.tokens.length) { throw new Error('Unexpected end of expression: ' + this.input); } else { this.error('Unexpected token ' + this.peek.text); } }; ParserImplementation.prototype.parseAccessOrCallScope = function parseAccessOrCallScope() { var name = this.peek.key; this.advance(); if (name === '$this') { return new AccessThis(0); } var ancestor = 0; while (name === '$parent') { ancestor++; if (this.optional('.')) { name = this.peek.key; this.advance(); } else if (this.peek === EOF || this.peek.text === '(' || this.peek.text === ')' || this.peek.text === '[' || this.peek.text === '}' || this.peek.text === ',' || this.peek.text === '|' || this.peek.text === '&') { return new AccessThis(ancestor); } else { this.error('Unexpected token ' + this.peek.text); } } if (this.optional('(')) { var args = this.parseExpressionList(')'); this.expect(')'); return new CallScope(name, args, ancestor); } return new AccessScope(name, ancestor); }; ParserImplementation.prototype.parseObject = function parseObject() { var keys = []; var values = []; this.expect('{'); if (this.peek.text !== '}') { do { var peek = this.peek; var value = peek.value; keys.push(typeof value === 'string' ? value : peek.text); this.advance(); if (peek.key && (this.peek.text === ',' || this.peek.text === '}')) { --this.index; values.push(this.parseAccessOrCallScope()); } else { this.expect(':'); values.push(this.parseExpression()); } } while (this.optional(',')); } this.expect('}'); return new LiteralObject(keys, values); }; ParserImplementation.prototype.parseExpressionList = function parseExpressionList(terminator) { var result = []; if (this.peek.text !== terminator) { do { result.push(this.parseExpression()); } while (this.optional(',')); } return result; }; ParserImplementation.prototype.optional = function optional(text) { if (this.peek.text === text) { this.advance(); return true; } return false; }; ParserImplementation.prototype.expect = function expect(text) { if (this.peek.text === text) { this.advance(); } else { this.error('Missing expected ' + text); } }; ParserImplementation.prototype.advance = function advance() { this.index++; }; ParserImplementation.prototype.error = function error(message) { var location = this.index < this.tokens.length ? 'at column ' + (this.tokens[this.index].index + 1) + ' in' : 'at the end of the expression'; throw new Error('Parser Error: ' + message + ' ' + location + ' [' + this.input + ']'); }; _createClass(ParserImplementation, [{ key: 'peek', get: function get() { return this.index < this.tokens.length ? this.tokens[this.index] : EOF; } }]); return ParserImplementation; }(); var mapProto = Map.prototype; function _getMapObserver(taskQueue, map) { return ModifyMapObserver.for(taskQueue, map); } exports.getMapObserver = _getMapObserver; var ModifyMapObserver = function (_ModifyCollectionObse2) { _inherits(ModifyMapObserver, _ModifyCollectionObse2); function ModifyMapObserver(taskQueue, map) { return _possibleConstructorReturn(this, _ModifyCollectionObse2.call(this, taskQueue, map)); } ModifyMapObserver.for = function _for(taskQueue, map) { if (!('__map_observer__' in map)) { Reflect.defineProperty(map, '__map_observer__', { value: ModifyMapObserver.create(taskQueue, map), enumerable: false, configurable: false }); } return map.__map_observer__; }; ModifyMapObserver.create = function create(taskQueue, map) { var observer = new ModifyMapObserver(taskQueue, map); var proto = mapProto; if (proto.set !== map.set || proto.delete !== map.delete || proto.clear !== map.clear) { proto = { set: map.set, delete: map.delete, clear: map.clear }; } map.set = function () { var hasValue = map.has(arguments[0]); var type = hasValue ? 'update' : 'add'; var oldValue = map.get(arguments[0]); var methodCallResult = proto.set.apply(map, arguments); if (!hasValue || oldValue !== map.get(arguments[0])) { observer.addChangeRecord({ type: type, object: map, key: arguments[0], oldValue: oldValue }); } return methodCallResult; }; map.delete = function () { var hasValue = map.has(arguments[0]); var oldValue = map.get(arguments[0]); var methodCallResult = proto.delete.apply(map, arguments); if (hasValue) { observer.addChangeRecord({ type: 'delete', object: map, key: arguments[0], oldValue: oldValue }); } return methodCallResult; }; map.clear = function () { var methodCallResult = proto.clear.apply(map, arguments); observer.addChangeRecord({ type: 'clear', object: map }); return methodCallResult; }; return observer; }; return ModifyMapObserver; }(ModifyCollectionObserver); function findOriginalEventTarget(event) { return event.path && event.path[0] || event.deepPath && event.deepPath[0] || event.target; } function stopPropagation() { this.standardStopPropagation(); this.propagationStopped = true; } function interceptStopPropagation(event) { event.standardStopPropagation = event.stopPropagation; event.stopPropagation = stopPropagation; } function handleCapturedEvent(event) { var interceptInstalled = false; event.propagationStopped = false; var target = findOriginalEventTarget(event); var orderedCallbacks = []; while (target) { if (target.capturedCallbacks) { var callback = target.capturedCallbacks[event.type]; if (callback) { if (!interceptInstalled) { interceptStopPropagation(event); interceptInstalled = true; } orderedCallbacks.push(callback); } } target = target.parentNode; } for (var _i22 = orderedCallbacks.length - 1; _i22 >= 0; _i22--) { var orderedCallback = orderedCallbacks[_i22]; if ('handleEvent' in orderedCallback) { orderedCallback.handleEvent(event); } else { orderedCallback(event); } if (event.propagationStopped) { break; } } } var CapturedHandlerEntry = function () { function CapturedHandlerEntry(eventName) { this.eventName = eventName; this.count = 0; } CapturedHandlerEntry.prototype.increment = function increment() { this.count++; if (this.count === 1) { _aureliaPal.DOM.addEventListener(this.eventName, handleCapturedEvent, true); } }; CapturedHandlerEntry.prototype.decrement = function decrement() { this.count--; if (this.count === 0) { _aureliaPal.DOM.removeEventListener(this.eventName, handleCapturedEvent, true); } }; return CapturedHandlerEntry; }(); function handleDelegatedEvent(event) { var interceptInstalled = false; event.propagationStopped = false; var target = findOriginalEventTarget(event); while (target && !event.propagationStopped) { if (target.delegatedCallbacks) { var callback = target.delegatedCallbacks[event.type]; if (callback) { if (!interceptInstalled) { interceptStopPropagation(event); interceptInstalled = true; } if ('handleEvent' in callback) { callback.handleEvent(event); } else { callback(event); } } } target = target.parentNode; } } var DelegateHandlerEntry = function () { function DelegateHandlerEntry(eventName) { this.eventName = eventName; this.count = 0; } DelegateHandlerEntry.prototype.increment = function increment() { this.count++; if (this.count === 1) { _aureliaPal.DOM.addEventListener(this.eventName, handleDelegatedEvent, false); } }; DelegateHandlerEntry.prototype.decrement = function decrement() { this.count--; if (this.count === 0) { _aureliaPal.DOM.removeEventListener(this.eventName, handleDelegatedEvent); } }; return DelegateHandlerEntry; }(); var DefaultEventStrategy = function () { function DefaultEventStrategy() { this.delegatedHandlers = {}; this.capturedHandlers = {}; } DefaultEventStrategy.prototype.subscribe = function subscribe(target, targetEvent, callback, strategy) { var _this22 = this; var delegatedHandlers = void 0; var capturedHandlers = void 0; var handlerEntry = void 0; if (strategy === delegationStrategy.bubbling) { var _ret = function () { delegatedHandlers = _this22.delegatedHandlers; handlerEntry = delegatedHandlers[targetEvent] || (delegatedHandlers[targetEvent] = new DelegateHandlerEntry(targetEvent)); var delegatedCallbacks = target.delegatedCallbacks || (target.delegatedCallbacks = {}); handlerEntry.increment(); delegatedCallbacks[targetEvent] = callback; return { v: function v() { handlerEntry.decrement(); delegatedCallbacks[targetEvent] = null; } }; }(); if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; } if (strategy === delegationStrategy.capturing) { var _ret2 = function () { capturedHandlers = _this22.capturedHandlers; handlerEntry = capturedHandlers[targetEvent] || (capturedHandlers[targetEvent] = new CapturedHandlerEntry(targetEvent)); var capturedCallbacks = target.capturedCallbacks || (target.capturedCallbacks = {}); handlerEntry.increment(); capturedCallbacks[targetEvent] = callback; return { v: function v() { handlerEntry.decrement(); capturedCallbacks[targetEvent] = null; } }; }(); if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === "object") return _ret2.v; } target.addEventListener(targetEvent, callback, false); return function () { target.removeEventListener(targetEvent, callback); }; }; return DefaultEventStrategy; }(); var delegationStrategy = exports.delegationStrategy = { none: 0, capturing: 1, bubbling: 2 }; var EventManager = exports.EventManager = function () { function EventManager() { this.elementHandlerLookup = {}; this.eventStrategyLookup = {}; this.registerElementConfig({ tagName: 'input', properties: { value: ['change', 'input'], checked: ['change', 'input'], files: ['change', 'input'] } }); this.registerElementConfig({ tagName: 'textarea', properties: { value: ['change', 'input'] } }); this.registerElementConfig({ tagName: 'select', properties: { value: ['change'] } }); this.registerElementConfig({ tagName: 'content editable', properties: { value: ['change', 'input', 'blur', 'keyup', 'paste'] } }); this.registerElementConfig({ tagName: 'scrollable element', properties: { scrollTop: ['scroll'], scrollLeft: ['scroll'] } }); this.defaultEventStrategy = new DefaultEventStrategy(); } EventManager.prototype.registerElementConfig = function registerElementConfig(config) { var tagName = config.tagName.toLowerCase(); var properties = config.properties; var propertyName = void 0; this.elementHandlerLookup[tagName] = {}; for (propertyName in properties) { if (properties.hasOwnProperty(propertyName)) { this.registerElementPropertyConfig(tagName, propertyName, properties[propertyName]); } } }; EventManager.prototype.registerElementPropertyConfig = function registerElementPropertyConfig(tagName, propertyName, events) { this.elementHandlerLookup[tagName][propertyName] = this.createElementHandler(events); }; EventManager.prototype.createElementHandler = function createElementHandler(events) { return { subscribe: function subscribe(target, callbackOrListener) { events.forEach(function (changeEvent) { target.addEventListener(changeEvent, callbackOrListener, false); }); return function () { events.forEach(function (changeEvent) { target.removeEventListener(changeEvent, callbackOrListener, false); }); }; } }; }; EventManager.prototype.registerElementHandler = function registerElementHandler(tagName, handler) { this.elementHandlerLookup[tagName.toLowerCase()] = handler; }; EventManager.prototype.registerEventStrategy = function registerEventStrategy(eventName, strategy) { this.eventStrategyLookup[eventName] = strategy; }; EventManager.prototype.getElementHandler = function getElementHandler(target, propertyName) { var tagName = void 0; var lookup = this.elementHandlerLookup; if (target.tagName) { tagName = target.tagName.toLowerCase(); if (lookup[tagName] && lookup[tagName][propertyName]) { return lookup[tagName][propertyName]; } if (propertyName === 'textContent' || propertyName === 'innerHTML') { return lookup['content editable'].value; } if (propertyName === 'scrollTop' || propertyName === 'scrollLeft') { return lookup['scrollable element'][propertyName]; } } return null; }; EventManager.prototype.addEventListener = function addEventListener(target, targetEvent, callbackOrListener, delegate) { return (this.eventStrategyLookup[targetEvent] || this.defaultEventStrategy).subscribe(target, targetEvent, callbackOrListener, delegate); }; return EventManager; }(); var DirtyChecker = exports.DirtyChecker = function () { function DirtyChecker() { this.tracked = []; this.checkDelay = 120; } DirtyChecker.prototype.addProperty = function addProperty(property) { var tracked = this.tracked; tracked.push(property); if (tracked.length === 1) { this.scheduleDirtyCheck(); } }; DirtyChecker.prototype.removeProperty = function removeProperty(property) { var tracked = this.tracked; tracked.splice(tracked.indexOf(property), 1); }; DirtyChecker.prototype.scheduleDirtyCheck = function scheduleDirtyCheck() { var _this23 = this; setTimeout(function () { return _this23.check(); }, this.checkDelay); }; DirtyChecker.prototype.check = function check() { var tracked = this.tracked; var i = tracked.length; while (i--) { var current = tracked[i]; if (current.isDirty()) { current.call(); } } if (tracked.length) { this.scheduleDirtyCheck(); } }; return DirtyChecker; }(); var DirtyCheckProperty = exports.DirtyCheckProperty = (_dec5 = subscriberCollection(), _dec5(_class5 = function () { function DirtyCheckProperty(dirtyChecker, obj, propertyName) { this.dirtyChecker = dirtyChecker; this.obj = obj; this.propertyName = propertyName; } DirtyCheckProperty.prototype.getValue = function getValue() { return this.obj[this.propertyName]; }; DirtyCheckProperty.prototype.setValue = function setValue(newValue) { this.obj[this.propertyName] = newValue; }; DirtyCheckProperty.prototype.call = function call() { var oldValue = this.oldValue; var newValue = this.getValue(); this.callSubscribers(newValue, oldValue); this.oldValue = newValue; }; DirtyCheckProperty.prototype.isDirty = function isDirty() { return this.oldValue !== this.obj[this.propertyName]; }; DirtyCheckProperty.prototype.subscribe = function subscribe(context, callable) { if (!this.hasSubscribers()) { this.oldValue = this.getValue(); this.dirtyChecker.addProperty(this); } this.addSubscriber(context, callable); }; DirtyCheckProperty.prototype.unsubscribe = function unsubscribe(context, callable) { if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) { this.dirtyChecker.removeProperty(this); } }; return DirtyCheckProperty; }()) || _class5); var logger = LogManager.getLogger('property-observation'); var propertyAccessor = exports.propertyAccessor = { getValue: function getValue(obj, propertyName) { return obj[propertyName]; }, setValue: function setValue(value, obj, propertyName) { obj[propertyName] = value; } }; var PrimitiveObserver = exports.PrimitiveObserver = function () { function PrimitiveObserver(primitive, propertyName) { this.doNotCache = true; this.primitive = primitive; this.propertyName = propertyName; } PrimitiveObserver.prototype.getValue = function getValue() { return this.primitive[this.propertyName]; }; PrimitiveObserver.prototype.setValue = function setValue() { var type = _typeof(this.primitive); throw new Error('The ' + this.propertyName + ' property of a ' + type + ' (' + this.primitive + ') cannot be assigned.'); }; PrimitiveObserver.prototype.subscribe = function subscribe() {}; PrimitiveObserver.prototype.unsubscribe = function unsubscribe() {}; return PrimitiveObserver; }(); var SetterObserver = exports.SetterObserver = (_dec6 = subscriberCollection(), _dec6(_class7 = function () { function SetterObserver(taskQueue, obj, propertyName) { this.taskQueue = taskQueue; this.obj = obj; this.propertyName = propertyName; this.queued = false; this.observing = false; } SetterObserver.prototype.getValue = function getValue() { return this.obj[this.propertyName]; }; SetterObserver.prototype.setValue = function setValue(newValue) { this.obj[this.propertyName] = newValue; }; SetterObserver.prototype.getterValue = function getterValue() { return this.currentValue; }; SetterObserver.prototype.setterValue = function setterValue(newValue) { var oldValue = this.currentValue; if (oldValue !== newValue) { if (!this.queued) { this.oldValue = oldValue; this.queued = true; this.taskQueue.queueMicroTask(this); } this.currentValue = newValue; } }; SetterObserver.prototype.call = function call() { var oldValue = this.oldValue; var newValue = this.currentValue; this.queued = false; this.callSubscribers(newValue, oldValue); }; SetterObserver.prototype.subscribe = function subscribe(context, callable) { if (!this.observing) { this.convertProperty(); } this.addSubscriber(context, callable); }; SetterObserver.prototype.unsubscribe = function unsubscribe(context, callable) { this.removeSubscriber(context, callable); }; SetterObserver.prototype.convertProperty = function convertProperty() { this.observing = true; this.currentValue = this.obj[this.propertyName]; this.setValue = this.setterValue; this.getValue = this.getterValue; if (!Reflect.defineProperty(this.obj, this.propertyName, { configurable: true, enumerable: this.propertyName in this.obj ? this.obj.propertyIsEnumerable(this.propertyName) : true, get: this.getValue.bind(this), set: this.setValue.bind(this) })) { logger.warn('Cannot observe property \'' + this.propertyName + '\' of object', this.obj); } }; return SetterObserver; }()) || _class7); var XLinkAttributeObserver = exports.XLinkAttributeObserver = function () { function XLinkAttributeObserver(element, propertyName, attributeName) { this.element = element; this.propertyName = propertyName; this.attributeName = attributeName; } XLinkAttributeObserver.prototype.getValue = function getValue() { return this.element.getAttributeNS('http://www.w3.org/1999/xlink', this.attributeName); }; XLinkAttributeObserver.prototype.setValue = function setValue(newValue) { return this.element.setAttributeNS('http://www.w3.org/1999/xlink', this.attributeName, newValue); }; XLinkAttributeObserver.prototype.subscribe = function subscribe() { throw new Error('Observation of a "' + this.element.nodeName + '" element\'s "' + this.propertyName + '" property is not supported.'); }; return XLinkAttributeObserver; }(); var dataAttributeAccessor = exports.dataAttributeAccessor = { getValue: function getValue(obj, propertyName) { return obj.getAttribute(propertyName); }, setValue: function setValue(value, obj, propertyName) { if (value === null || value === undefined) { obj.removeAttribute(propertyName); } else { obj.setAttribute(propertyName, value); } } }; var DataAttributeObserver = exports.DataAttributeObserver = function () { function DataAttributeObserver(element, propertyName) { this.element = element; this.propertyName = propertyName; } DataAttributeObserver.prototype.getValue = function getValue() { return this.element.getAttribute(this.propertyName); }; DataAttributeObserver.prototype.setValue = function setValue(newValue) { if (newValue === null || newValue === undefined) { return this.element.removeAttribute(this.propertyName); } return this.element.setAttribute(this.propertyName, newValue); }; DataAttributeObserver.prototype.subscribe = function subscribe() { throw new Error('Observation of a "' + this.element.nodeName + '" element\'s "' + this.propertyName + '" property is not supported.'); }; return DataAttributeObserver; }(); var StyleObserver = exports.StyleObserver = function () { function StyleObserver(element, propertyName) { this.element = element; this.propertyName = propertyName; this.styles = null; this.version = 0; } StyleObserver.prototype.getValue = function getValue() { return this.element.style.cssText; }; StyleObserver.prototype._setProperty = function _setProperty(style, value) { var priority = ''; if (value !== null && value !== undefined && typeof value.indexOf === 'function' && value.indexOf('!important') !== -1) { priority = 'important'; value = value.replace('!important', ''); } this.element.style.setProperty(style, value, priority); }; StyleObserver.prototype.setValue = function setValue(newValue) { var styles = this.styles || {}; var style = void 0; var version = this.version; if (newValue !== null && newValue !== undefined) { if (newValue instanceof Object) { var value = void 0; for (style in newValue) { if (newValue.hasOwnProperty(style)) { value = newValue[style]; style = style.replace(/([A-Z])/g, function (m) { return '-' + m.toLowerCase(); }); styles[style] = version; this._setProperty(style, value); } } } else if (newValue.length) { var rx = /\s*([\w\-]+)\s*:\s*((?:(?:[\w\-]+\(\s*(?:"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|[\w\-]+\(\s*(?:^"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|[^\)]*)\),?|[^\)]*)\),?|"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|[^;]*),?\s*)+);?/g; var pair = void 0; while ((pair = rx.exec(newValue)) !== null) { style = pair[1]; if (!style) { continue; } styles[style] = version; this._setProperty(style, pair[2]); } } } this.styles = styles; this.version += 1; if (version === 0) { return; } version -= 1; for (style in styles) { if (!styles.hasOwnProperty(style) || styles[style] !== version) { continue; } this.element.style.removeProperty(style); } }; StyleObserver.prototype.subscribe = function subscribe() { throw new Error('Observation of a "' + this.element.nodeName + '" element\'s "' + this.propertyName + '" property is not supported.'); }; return StyleObserver; }(); var ValueAttributeObserver = exports.ValueAttributeObserver = (_dec7 = subscriberCollection(), _dec7(_class8 = function () { function ValueAttributeObserver(element, propertyName, handler) { this.element = element; this.propertyName = propertyName; this.handler = handler; if (propertyName === 'files') { this.setValue = function () {}; } } ValueAttributeObserver.prototype.getValue = function getValue() { return this.element[this.propertyName]; }; ValueAttributeObserver.prototype.setValue = function setValue(newValue) { newValue = newValue === undefined || newValue === null ? '' : newValue; if (this.element[this.propertyName] !== newValue) { this.element[this.propertyName] = newValue; this.notify(); } }; ValueAttributeObserver.prototype.notify = function notify() { var oldValue = this.oldValue; var newValue = this.getValue(); this.callSubscribers(newValue, oldValue); this.oldValue = newValue; }; ValueAttributeObserver.prototype.handleEvent = function handleEvent() { this.notify(); }; ValueAttributeObserver.prototype.subscribe = function subscribe(context, callable) { if (!this.hasSubscribers()) { this.oldValue = this.getValue(); this.disposeHandler = this.handler.subscribe(this.element, this); } this.addSubscriber(context, callable); }; ValueAttributeObserver.prototype.unsubscribe = function unsubscribe(context, callable) { if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) { this.disposeHandler(); this.disposeHandler = null; } }; return ValueAttributeObserver; }()) || _class8); var checkedArrayContext = 'CheckedObserver:array'; var checkedValueContext = 'CheckedObserver:value'; var CheckedObserver = exports.CheckedObserver = (_dec8 = subscriberCollection(), _dec8(_class9 = function () { function CheckedObserver(element, handler, observerLocator) { this.element = element; this.handler = handler; this.observerLocator = observerLocator; } CheckedObserver.prototype.getValue = function getValue() { return this.value; }; CheckedObserver.prototype.setValue = function setValue(newValue) { if (this.initialSync && this.value === newValue) { return; } if (this.arrayObserver) { this.arrayObserver.unsubscribe(checkedArrayContext, this); this.arrayObserver = null; } if (this.element.type === 'checkbox' && Array.isArray(newValue)) { this.arrayObserver = this.observerLocator.getArrayObserver(newValue); this.arrayObserver.subscribe(checkedArrayContext, this); } this.oldValue = this.value; this.value = newValue; this.synchronizeElement(); this.notify(); if (!this.initialSync) { this.initialSync = true; this.observerLocator.taskQueue.queueMicroTask(this); } }; CheckedObserver.prototype.call = function call(context, splices) { this.synchronizeElement(); if (!this.valueObserver) { this.valueObserver = this.element.__observers__.model || this.element.__observers__.value; if (this.valueObserver) { this.valueObserver.subscribe(checkedValueContext, this); } } }; CheckedObserver.prototype.synchronizeElement = function synchronizeElement() { var value = this.value; var element = this.element; var elementValue = element.hasOwnProperty('model') ? element.model : element.value; var isRadio = element.type === 'radio'; var matcher = element.matcher || function (a, b) { return a === b; }; element.checked = isRadio && !!matcher(value, elementValue) || !isRadio && value === true || !isRadio && Array.isArray(value) && value.findIndex(function (item) { return !!matcher(item, elementValue); }) !== -1; }; CheckedObserver.prototype.synchronizeValue = function synchronizeValue() { var value = this.value; var element = this.element; var elementValue = element.hasOwnProperty('model') ? element.model : element.value; var index = void 0; var matcher = element.matcher || function (a, b) { return a === b; }; if (element.type === 'checkbox') { if (Array.isArray(value)) { index = value.findIndex(function (item) { return !!matcher(item, elementValue); }); if (element.checked && index === -1) { value.push(elementValue); } else if (!element.checked && index !== -1) { value.splice(index, 1); } return; } value = element.checked; } else if (element.checked) { value = elementValue; } else { return; } this.oldValue = this.value; this.value = value; this.notify(); }; CheckedObserver.prototype.notify = function notify() { var oldValue = this.oldValue; var newValue = this.value; if (newValue === oldValue) { return; } this.callSubscribers(newValue, oldValue); }; CheckedObserver.prototype.handleEvent = function handleEvent() { this.synchronizeValue(); }; CheckedObserver.prototype.subscribe = function subscribe(context, callable) { if (!this.hasSubscribers()) { this.disposeHandler = this.handler.subscribe(this.element, this); } this.addSubscriber(context, callable); }; CheckedObserver.prototype.unsubscribe = function unsubscribe(context, callable) { if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) { this.disposeHandler(); this.disposeHandler = null; } }; CheckedObserver.prototype.unbind = function unbind() { if (this.arrayObserver) { this.arrayObserver.unsubscribe(checkedArrayContext, this); this.arrayObserver = null; } if (this.valueObserver) { this.valueObserver.unsubscribe(checkedValueContext, this); } }; return CheckedObserver; }()) || _class9); var selectArrayContext = 'SelectValueObserver:array'; var SelectValueObserver = exports.SelectValueObserver = (_dec9 = subscriberCollection(), _dec9(_class10 = function () { function SelectValueObserver(element, handler, observerLocator) { this.element = element; this.handler = handler; this.observerLocator = observerLocator; } SelectValueObserver.prototype.getValue = function getValue() { return this.value; }; SelectValueObserver.prototype.setValue = function setValue(newValue) { if (newValue !== null && newValue !== undefined && this.element.multiple && !Array.isArray(newValue)) { throw new Error('Only null or Array instances can be bound to a multi-select.'); } if (this.value === newValue) { return; } if (this.arrayObserver) { this.arrayObserver.unsubscribe(selectArrayContext, this); this.arrayObserver = null; } if (Array.isArray(newValue)) { this.arrayObserver = this.observerLocator.getArrayObserver(newValue); this.arrayObserver.subscribe(selectArrayContext, this); } this.oldValue = this.value; this.value = newValue; this.synchronizeOptions(); this.notify(); if (!this.initialSync) { this.initialSync = true; this.observerLocator.taskQueue.queueMicroTask(this); } }; SelectValueObserver.prototype.call = function call(context, splices) { this.synchronizeOptions(); }; SelectValueObserver.prototype.synchronizeOptions = function synchronizeOptions() { var value = this.value; var isArray = void 0; if (Array.isArray(value)) { isArray = true; } var options = this.element.options; var i = options.length; var matcher = this.element.matcher || function (a, b) { return a === b; }; var _loop = function _loop() { var option = options.item(i); var optionValue = option.hasOwnProperty('model') ? option.model : option.value; if (isArray) { option.selected = value.findIndex(function (item) { return !!matcher(optionValue, item); }) !== -1; return 'continue'; } option.selected = !!matcher(optionValue, value); }; while (i--) { var _ret3 = _loop(); if (_ret3 === 'continue') continue; } }; SelectValueObserver.prototype.synchronizeValue = function synchronizeValue() { var _this24 = this; var options = this.element.options; var count = 0; var value = []; for (var _i23 = 0, ii = options.length; _i23 < ii; _i23++) { var _option = options.item(_i23); if (!_option.selected) { continue; } value.push(_option.hasOwnProperty('model') ? _option.model : _option.value); count++; } if (this.element.multiple) { if (Array.isArray(this.value)) { var _ret4 = function () { var matcher = _this24.element.matcher || function (a, b) { return a === b; }; var i = 0; var _loop2 = function _loop2() { var a = _this24.value[i]; if (value.findIndex(function (b) { return matcher(a, b); }) === -1) { _this24.value.splice(i, 1); } else { i++; } }; while (i < _this24.value.length) { _loop2(); } i = 0; var _loop3 = function _loop3() { var a = value[i]; if (_this24.value.findIndex(function (b) { return matcher(a, b); }) === -1) { _this24.value.push(a); } i++; }; while (i < value.length) { _loop3(); } return { v: void 0 }; }(); if ((typeof _ret4 === 'undefined' ? 'undefined' : _typeof(_ret4)) === "object") return _ret4.v; } } else { if (count === 0) { value = null; } else { value = value[0]; } } if (value !== this.value) { this.oldValue = this.value; this.value = value; this.notify(); } }; SelectValueObserver.prototype.notify = function notify() { var oldValue = this.oldValue; var newValue = this.value; this.callSubscribers(newValue, oldValue); }; SelectValueObserver.prototype.handleEvent = function handleEvent() { this.synchronizeValue(); }; SelectValueObserver.prototype.subscribe = function subscribe(context, callable) { if (!this.hasSubscribers()) { this.disposeHandler = this.handler.subscribe(this.element, this); } this.addSubscriber(context, callable); }; SelectValueObserver.prototype.unsubscribe = function unsubscribe(context, callable) { if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) { this.disposeHandler(); this.disposeHandler = null; } }; SelectValueObserver.prototype.bind = function bind() { var _this25 = this; this.domObserver = _aureliaPal.DOM.createMutationObserver(function () { _this25.synchronizeOptions(); _this25.synchronizeValue(); }); this.domObserver.observe(this.element, { childList: true, subtree: true }); }; SelectValueObserver.prototype.unbind = function unbind() { this.domObserver.disconnect(); this.domObserver = null; if (this.arrayObserver) { this.arrayObserver.unsubscribe(selectArrayContext, this); this.arrayObserver = null; } }; return SelectValueObserver; }()) || _class10); var ClassObserver = exports.ClassObserver = function () { function ClassObserver(element) { this.element = element; this.doNotCache = true; this.value = ''; this.version = 0; } ClassObserver.prototype.getValue = function getValue() { return this.value; }; ClassObserver.prototype.setValue = function setValue(newValue) { var nameIndex = this.nameIndex || {}; var version = this.version; var names = void 0; var name = void 0; if (newValue !== null && newValue !== undefined && newValue.length) { names = newValue.split(/\s+/); for (var _i24 = 0, length = names.length; _i24 < length; _i24++) { name = names[_i24]; if (name === '') { continue; } nameIndex[name] = version; this.element.classList.add(name); } } this.value = newValue; this.nameIndex = nameIndex; this.version += 1; if (version === 0) { return; } version -= 1; for (name in nameIndex) { if (!nameIndex.hasOwnProperty(name) || nameIndex[name] !== version) { continue; } this.element.classList.remove(name); } }; ClassObserver.prototype.subscribe = function subscribe() { throw new Error('Observation of a "' + this.element.nodeName + '" element\'s "class" property is not supported.'); }; return ClassObserver; }(); function hasDeclaredDependencies(descriptor) { return !!(descriptor && descriptor.get && descriptor.get.dependencies); } function declarePropertyDependencies(ctor, propertyName, dependencies) { var descriptor = Object.getOwnPropertyDescriptor(ctor.prototype, propertyName); descriptor.get.dependencies = dependencies; } function computedFrom() { for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) { rest[_key] = arguments[_key]; } return function (target, key, descriptor) { descriptor.get.dependencies = rest; return descriptor; }; } var ComputedExpression = exports.ComputedExpression = function (_Expression19) { _inherits(ComputedExpression, _Expression19); function ComputedExpression(name, dependencies) { var _this26 = _possibleConstructorReturn(this, _Expression19.call(this)); _this26.name = name; _this26.dependencies = dependencies; _this26.isAssignable = true; return _this26; } ComputedExpression.prototype.evaluate = function evaluate(scope, lookupFunctions) { return scope.bindingContext[this.name]; }; ComputedExpression.prototype.assign = function assign(scope, value) { scope.bindingContext[this.name] = value; }; ComputedExpression.prototype.accept = function accept(visitor) { throw new Error('not implemented'); }; ComputedExpression.prototype.connect = function connect(binding, scope) { var dependencies = this.dependencies; var i = dependencies.length; while (i--) { dependencies[i].connect(binding, scope); } }; return ComputedExpression; }(Expression); function createComputedObserver(obj, propertyName, descriptor, observerLocator) { var dependencies = descriptor.get.dependencies; if (!(dependencies instanceof ComputedExpression)) { var _i25 = dependencies.length; while (_i25--) { dependencies[_i25] = observerLocator.parser.parse(dependencies[_i25]); } dependencies = descriptor.get.dependencies = new ComputedExpression(propertyName, dependencies); } var scope = { bindingContext: obj, overrideContext: createOverrideContext(obj) }; return new ExpressionObserver(scope, dependencies, observerLocator); } var svgElements = void 0; var svgPresentationElements = void 0; var svgPresentationAttributes = void 0; var svgAnalyzer = void 0; if (typeof FEATURE_NO_SVG === 'undefined') { (function () { svgElements = { a: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'target', 'transform', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], altGlyph: ['class', 'dx', 'dy', 'externalResourcesRequired', 'format', 'glyphRef', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], altGlyphDef: ['id', 'xml:base', 'xml:lang', 'xml:space'], altGlyphItem: ['id', 'xml:base', 'xml:lang', 'xml:space'], animate: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], animateColor: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], animateMotion: ['accumulate', 'additive', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keyPoints', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'origin', 'path', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'rotate', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], animateTransform: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'type', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], circle: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'r', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], clipPath: ['class', 'clipPathUnits', 'externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], 'color-profile': ['id', 'local', 'name', 'rendering-intent', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], cursor: ['externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], defs: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], desc: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'], ellipse: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], feBlend: ['class', 'height', 'id', 'in', 'in2', 'mode', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feColorMatrix: ['class', 'height', 'id', 'in', 'result', 'style', 'type', 'values', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feComponentTransfer: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feComposite: ['class', 'height', 'id', 'in', 'in2', 'k1', 'k2', 'k3', 'k4', 'operator', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feConvolveMatrix: ['bias', 'class', 'divisor', 'edgeMode', 'height', 'id', 'in', 'kernelMatrix', 'kernelUnitLength', 'order', 'preserveAlpha', 'result', 'style', 'targetX', 'targetY', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feDiffuseLighting: ['class', 'diffuseConstant', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feDisplacementMap: ['class', 'height', 'id', 'in', 'in2', 'result', 'scale', 'style', 'width', 'x', 'xChannelSelector', 'xml:base', 'xml:lang', 'xml:space', 'y', 'yChannelSelector'], feDistantLight: ['azimuth', 'elevation', 'id', 'xml:base', 'xml:lang', 'xml:space'], feFlood: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feFuncA: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'], feFuncB: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'], feFuncG: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'], feFuncR: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'], feGaussianBlur: ['class', 'height', 'id', 'in', 'result', 'stdDeviation', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feImage: ['class', 'externalResourcesRequired', 'height', 'id', 'preserveAspectRatio', 'result', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], feMerge: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feMergeNode: ['id', 'xml:base', 'xml:lang', 'xml:space'], feMorphology: ['class', 'height', 'id', 'in', 'operator', 'radius', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feOffset: ['class', 'dx', 'dy', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], fePointLight: ['id', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'], feSpecularLighting: ['class', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'specularConstant', 'specularExponent', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feSpotLight: ['id', 'limitingConeAngle', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'specularExponent', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'], feTile: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], feTurbulence: ['baseFrequency', 'class', 'height', 'id', 'numOctaves', 'result', 'seed', 'stitchTiles', 'style', 'type', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], filter: ['class', 'externalResourcesRequired', 'filterRes', 'filterUnits', 'height', 'id', 'primitiveUnits', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], font: ['class', 'externalResourcesRequired', 'horiz-adv-x', 'horiz-origin-x', 'horiz-origin-y', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'], 'font-face': ['accent-height', 'alphabetic', 'ascent', 'bbox', 'cap-height', 'descent', 'font-family', 'font-size', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'hanging', 'id', 'ideographic', 'mathematical', 'overline-position', 'overline-thickness', 'panose-1', 'slope', 'stemh', 'stemv', 'strikethrough-position', 'strikethrough-thickness', 'underline-position', 'underline-thickness', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'widths', 'x-height', 'xml:base', 'xml:lang', 'xml:space'], 'font-face-format': ['id', 'string', 'xml:base', 'xml:lang', 'xml:space'], 'font-face-name': ['id', 'name', 'xml:base', 'xml:lang', 'xml:space'], 'font-face-src': ['id', 'xml:base', 'xml:lang', 'xml:space'], 'font-face-uri': ['id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], foreignObject: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], g: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], glyph: ['arabic-form', 'class', 'd', 'glyph-name', 'horiz-adv-x', 'id', 'lang', 'orientation', 'style', 'unicode', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'], glyphRef: ['class', 'dx', 'dy', 'format', 'glyphRef', 'id', 'style', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], hkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space'], image: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], line: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'x1', 'x2', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'], linearGradient: ['class', 'externalResourcesRequired', 'gradientTransform', 'gradientUnits', 'id', 'spreadMethod', 'style', 'x1', 'x2', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'], marker: ['class', 'externalResourcesRequired', 'id', 'markerHeight', 'markerUnits', 'markerWidth', 'orient', 'preserveAspectRatio', 'refX', 'refY', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'], mask: ['class', 'externalResourcesRequired', 'height', 'id', 'maskContentUnits', 'maskUnits', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], metadata: ['id', 'xml:base', 'xml:lang', 'xml:space'], 'missing-glyph': ['class', 'd', 'horiz-adv-x', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'], mpath: ['externalResourcesRequired', 'id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], path: ['class', 'd', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'pathLength', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], pattern: ['class', 'externalResourcesRequired', 'height', 'id', 'patternContentUnits', 'patternTransform', 'patternUnits', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], polygon: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], polyline: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], radialGradient: ['class', 'cx', 'cy', 'externalResourcesRequired', 'fx', 'fy', 'gradientTransform', 'gradientUnits', 'id', 'r', 'spreadMethod', 'style', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], rect: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], script: ['externalResourcesRequired', 'id', 'type', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], set: ['attributeName', 'attributeType', 'begin', 'dur', 'end', 'externalResourcesRequired', 'fill', 'id', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], stop: ['class', 'id', 'offset', 'style', 'xml:base', 'xml:lang', 'xml:space'], style: ['id', 'media', 'title', 'type', 'xml:base', 'xml:lang', 'xml:space'], svg: ['baseProfile', 'class', 'contentScriptType', 'contentStyleType', 'externalResourcesRequired', 'height', 'id', 'onabort', 'onactivate', 'onclick', 'onerror', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onresize', 'onscroll', 'onunload', 'onzoom', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'version', 'viewBox', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'zoomAndPan'], switch: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'], symbol: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'], text: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'transform', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], textPath: ['class', 'externalResourcesRequired', 'id', 'lengthAdjust', 'method', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'spacing', 'startOffset', 'style', 'systemLanguage', 'textLength', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'], title: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'], tref: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], tspan: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'], use: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'], view: ['externalResourcesRequired', 'id', 'preserveAspectRatio', 'viewBox', 'viewTarget', 'xml:base', 'xml:lang', 'xml:space', 'zoomAndPan'], vkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space'] }; svgPresentationElements = { 'a': true, 'altGlyph': true, 'animate': true, 'animateColor': true, 'circle': true, 'clipPath': true, 'defs': true, 'ellipse': true, 'feBlend': true, 'feColorMatrix': true, 'feComponentTransfer': true, 'feComposite': true, 'feConvolveMatrix': true, 'feDiffuseLighting': true, 'feDisplacementMap': true, 'feFlood': true, 'feGaussianBlur': true, 'feImage': true, 'feMerge': true, 'feMorphology': true, 'feOffset': true, 'feSpecularLighting': true, 'feTile': true, 'feTurbulence': true, 'filter': true, 'font': true, 'foreignObject': true, 'g': true, 'glyph': true, 'glyphRef': true, 'image': true, 'line': true, 'linearGradient': true, 'marker': true, 'mask': true, 'missing-glyph': true, 'path': true, 'pattern': true, 'polygon': true, 'polyline': true, 'radialGradient': true, 'rect': true, 'stop': true, 'svg': true, 'switch': true, 'symbol': true, 'text': true, 'textPath': true, 'tref': true, 'tspan': true, 'use': true }; svgPresentationAttributes = { 'alignment-baseline': true, 'baseline-shift': true, 'clip-path': true, 'clip-rule': true, 'clip': true, 'color-interpolation-filters': true, 'color-interpolation': true, 'color-profile': true, 'color-rendering': true, 'color': true, 'cursor': true, 'direction': true, 'display': true, 'dominant-baseline': true, 'enable-background': true, 'fill-opacity': true, 'fill-rule': true, 'fill': true, 'filter': true, 'flood-color': true, 'flood-opacity': true, 'font-family': true, 'font-size-adjust': true, 'font-size': true, 'font-stretch': true, 'font-style': true, 'font-variant': true, 'font-weight': true, 'glyph-orientation-horizontal': true, 'glyph-orientation-vertical': true, 'image-rendering': true, 'kerning': true, 'letter-spacing': true, 'lighting-color': true, 'marker-end': true, 'marker-mid': true, 'marker-start': true, 'mask': true, 'opacity': true, 'overflow': true, 'pointer-events': true, 'shape-rendering': true, 'stop-color': true, 'stop-opacity': true, 'stroke-dasharray': true, 'stroke-dashoffset': true, 'stroke-linecap': true, 'stroke-linejoin': true, 'stroke-miterlimit': true, 'stroke-opacity': true, 'stroke-width': true, 'stroke': true, 'text-anchor': true, 'text-decoration': true, 'text-rendering': true, 'unicode-bidi': true, 'visibility': true, 'word-spacing': true, 'writing-mode': true }; var createElement = function createElement(html) { var div = _aureliaPal.DOM.createElement('div'); div.innerHTML = html; return div.firstChild; }; svgAnalyzer = function () { function SVGAnalyzer() { if (createElement('').firstElementChild.nodeName === 'altglyph' && elements.altGlyph) { elements.altglyph = elements.altGlyph; delete elements.altGlyph; elements.altglyphdef = elements.altGlyphDef; delete elements.altGlyphDef; elements.altglyphitem = elements.altGlyphItem; delete elements.altGlyphItem; elements.glyphref = elements.glyphRef; delete elements.glyphRef; } } SVGAnalyzer.prototype.isStandardSvgAttribute = function isStandardSvgAttribute(nodeName, attributeName) { return presentationElements[nodeName] && presentationAttributes[attributeName] || elements[nodeName] && elements[nodeName].indexOf(attributeName) !== -1; }; return SVGAnalyzer; }(); })(); } var elements = exports.elements = svgElements; var presentationElements = exports.presentationElements = svgPresentationElements; var presentationAttributes = exports.presentationAttributes = svgPresentationAttributes; var SVGAnalyzer = exports.SVGAnalyzer = svgAnalyzer || function () { function _class11() { } _class11.prototype.isStandardSvgAttribute = function isStandardSvgAttribute() { return false; }; return _class11; }(); var ObserverLocator = exports.ObserverLocator = (_temp = _class12 = function () { function ObserverLocator(taskQueue, eventManager, dirtyChecker, svgAnalyzer, parser) { this.taskQueue = taskQueue; this.eventManager = eventManager; this.dirtyChecker = dirtyChecker; this.svgAnalyzer = svgAnalyzer; this.parser = parser; this.adapters = []; this.logger = LogManager.getLogger('observer-locator'); } ObserverLocator.prototype.getObserver = function getObserver(obj, propertyName) { var observersLookup = obj.__observers__; var observer = void 0; if (observersLookup && propertyName in observersLookup) { return observersLookup[propertyName]; } observer = this.createPropertyObserver(obj, propertyName); if (!observer.doNotCache) { if (observersLookup === undefined) { observersLookup = this.getOrCreateObserversLookup(obj); } observersLookup[propertyName] = observer; } return observer; }; ObserverLocator.prototype.getOrCreateObserversLookup = function getOrCreateObserversLookup(obj) { return obj.__observers__ || this.createObserversLookup(obj); }; ObserverLocator.prototype.createObserversLookup = function createObserversLookup(obj) { var value = {}; if (!Reflect.defineProperty(obj, '__observers__', { enumerable: false, configurable: false, writable: false, value: value })) { this.logger.warn('Cannot add observers to object', obj); } return value; }; ObserverLocator.prototype.addAdapter = function addAdapter(adapter) { this.adapters.push(adapter); }; ObserverLocator.prototype.getAdapterObserver = function getAdapterObserver(obj, propertyName, descriptor) { for (var _i26 = 0, ii = this.adapters.length; _i26 < ii; _i26++) { var adapter = this.adapters[_i26]; var observer = adapter.getObserver(obj, propertyName, descriptor); if (observer) { return observer; } } return null; }; ObserverLocator.prototype.createPropertyObserver = function createPropertyObserver(obj, propertyName) { var descriptor = void 0; var handler = void 0; var xlinkResult = void 0; if (!(obj instanceof Object)) { return new PrimitiveObserver(obj, propertyName); } if (obj instanceof _aureliaPal.DOM.Element) { if (propertyName === 'class') { return new ClassObserver(obj); } if (propertyName === 'style' || propertyName === 'css') { return new StyleObserver(obj, propertyName); } handler = this.eventManager.getElementHandler(obj, propertyName); if (propertyName === 'value' && obj.tagName.toLowerCase() === 'select') { return new SelectValueObserver(obj, handler, this); } if (propertyName === 'checked' && obj.tagName.toLowerCase() === 'input') { return new CheckedObserver(obj, handler, this); } if (handler) { return new ValueAttributeObserver(obj, propertyName, handler); } xlinkResult = /^xlink:(.+)$/.exec(propertyName); if (xlinkResult) { return new XLinkAttributeObserver(obj, propertyName, xlinkResult[1]); } if (propertyName === 'role' && (obj instanceof _aureliaPal.DOM.Element || obj instanceof _aureliaPal.DOM.SVGElement) || /^\w+:|^data-|^aria-/.test(propertyName) || obj instanceof _aureliaPal.DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName)) { return new DataAttributeObserver(obj, propertyName); } } descriptor = Object.getPropertyDescriptor(obj, propertyName); if (hasDeclaredDependencies(descriptor)) { return createComputedObserver(obj, propertyName, descriptor, this); } if (descriptor) { var existingGetterOrSetter = descriptor.get || descriptor.set; if (existingGetterOrSetter) { if (existingGetterOrSetter.getObserver) { return existingGetterOrSetter.getObserver(obj); } var adapterObserver = this.getAdapterObserver(obj, propertyName, descriptor); if (adapterObserver) { return adapterObserver; } return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName); } } if (obj instanceof Array) { if (propertyName === 'length') { return this.getArrayObserver(obj).getLengthObserver(); } return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName); } else if (obj instanceof Map) { if (propertyName === 'size') { return this.getMapObserver(obj).getLengthObserver(); } return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName); } else if (obj instanceof Set) { if (propertyName === 'size') { return this.getSetObserver(obj).getLengthObserver(); } return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName); } return new SetterObserver(this.taskQueue, obj, propertyName); }; ObserverLocator.prototype.getAccessor = function getAccessor(obj, propertyName) { if (obj instanceof _aureliaPal.DOM.Element) { if (propertyName === 'class' || propertyName === 'style' || propertyName === 'css' || propertyName === 'value' && (obj.tagName.toLowerCase() === 'input' || obj.tagName.toLowerCase() === 'select') || propertyName === 'checked' && obj.tagName.toLowerCase() === 'input' || propertyName === 'model' && obj.tagName.toLowerCase() === 'input' || /^xlink:.+$/.exec(propertyName)) { return this.getObserver(obj, propertyName); } if (/^\w+:|^data-|^aria-/.test(propertyName) || obj instanceof _aureliaPal.DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName) || obj.tagName.toLowerCase() === 'img' && propertyName === 'src' || obj.tagName.toLowerCase() === 'a' && propertyName === 'href') { return dataAttributeAccessor; } } return propertyAccessor; }; ObserverLocator.prototype.getArrayObserver = function getArrayObserver(array) { return _getArrayObserver(this.taskQueue, array); }; ObserverLocator.prototype.getMapObserver = function getMapObserver(map) { return _getMapObserver(this.taskQueue, map); }; ObserverLocator.prototype.getSetObserver = function getSetObserver(set) { return _getSetObserver(this.taskQueue, set); }; return ObserverLocator; }(), _class12.inject = [_aureliaTaskQueue.TaskQueue, EventManager, DirtyChecker, SVGAnalyzer, Parser], _temp); var ObjectObservationAdapter = exports.ObjectObservationAdapter = function () { function ObjectObservationAdapter() { } ObjectObservationAdapter.prototype.getObserver = function getObserver(object, propertyName, descriptor) { throw new Error('BindingAdapters must implement getObserver(object, propertyName).'); }; return ObjectObservationAdapter; }(); var BindingExpression = exports.BindingExpression = function () { function BindingExpression(observerLocator, targetProperty, sourceExpression, mode, lookupFunctions, attribute) { this.observerLocator = observerLocator; this.targetProperty = targetProperty; this.sourceExpression = sourceExpression; this.mode = mode; this.lookupFunctions = lookupFunctions; this.attribute = attribute; this.discrete = false; } BindingExpression.prototype.createBinding = function createBinding(target) { return new Binding(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.mode, this.lookupFunctions); }; return BindingExpression; }(); var Binding = exports.Binding = (_dec10 = connectable(), _dec10(_class13 = function () { function Binding(observerLocator, sourceExpression, target, targetProperty, mode, lookupFunctions) { this.observerLocator = observerLocator; this.sourceExpression = sourceExpression; this.target = target; this.targetProperty = targetProperty; this.mode = mode; this.lookupFunctions = lookupFunctions; } Binding.prototype.updateTarget = function updateTarget(value) { this.targetObserver.setValue(value, this.target, this.targetProperty); }; Binding.prototype.updateSource = function updateSource(value) { this.sourceExpression.assign(this.source, value, this.lookupFunctions); }; Binding.prototype.call = function call(context, newValue, oldValue) { if (!this.isBound) { return; } if (context === sourceContext) { oldValue = this.targetObserver.getValue(this.target, this.targetProperty); newValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions); if (newValue !== oldValue) { this.updateTarget(newValue); } if (this.mode !== bindingMode.oneTime) { this._version++; this.sourceExpression.connect(this, this.source); this.unobserve(false); } return; } if (context === targetContext) { if (newValue !== this.sourceExpression.evaluate(this.source, this.lookupFunctions)) { this.updateSource(newValue); } return; } throw new Error('Unexpected call context ' + context); }; Binding.prototype.bind = function bind(source) { if (this.isBound) { if (this.source === source) { return; } this.unbind(); } this.isBound = true; this.source = source; if (this.sourceExpression.bind) { this.sourceExpression.bind(this, source, this.lookupFunctions); } var mode = this.mode; if (!this.targetObserver) { var method = mode === bindingMode.twoWay || mode === bindingMode.fromView ? 'getObserver' : 'getAccessor'; this.targetObserver = this.observerLocator[method](this.target, this.targetProperty); } if ('bind' in this.targetObserver) { this.targetObserver.bind(); } if (this.mode !== bindingMode.fromView) { var value = this.sourceExpression.evaluate(source, this.lookupFunctions); this.updateTarget(value); } if (mode === bindingMode.toView) { enqueueBindingConnect(this); } else if (mode === bindingMode.twoWay) { this.sourceExpression.connect(this, source); this.targetObserver.subscribe(targetContext, this); } else if (mode === bindingMode.fromView) { this.targetObserver.subscribe(targetContext, this); } }; Binding.prototype.unbind = function unbind() { if (!this.isBound) { return; } this.isBound = false; if (this.sourceExpression.unbind) { this.sourceExpression.unbind(this, this.source); } this.source = null; if ('unbind' in this.targetObserver) { this.targetObserver.unbind(); } if (this.targetObserver.unsubscribe) { this.targetObserver.unsubscribe(targetContext, this); } this.unobserve(true); }; Binding.prototype.connect = function connect(evaluate) { if (!this.isBound) { return; } if (evaluate) { var value = this.sourceExpression.evaluate(this.source, this.lookupFunctions); this.updateTarget(value); } this.sourceExpression.connect(this, this.source); }; return Binding; }()) || _class13); var CallExpression = exports.CallExpression = function () { function CallExpression(observerLocator, targetProperty, sourceExpression, lookupFunctions) { this.observerLocator = observerLocator; this.targetProperty = targetProperty; this.sourceExpression = sourceExpression; this.lookupFunctions = lookupFunctions; } CallExpression.prototype.createBinding = function createBinding(target) { return new Call(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.lookupFunctions); }; return CallExpression; }(); var Call = exports.Call = function () { function Call(observerLocator, sourceExpression, target, targetProperty, lookupFunctions) { this.sourceExpression = sourceExpression; this.target = target; this.targetProperty = observerLocator.getObserver(target, targetProperty); this.lookupFunctions = lookupFunctions; } Call.prototype.callSource = function callSource($event) { var overrideContext = this.source.overrideContext; Object.assign(overrideContext, $event); overrideContext.$event = $event; var mustEvaluate = true; var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate); delete overrideContext.$event; for (var prop in $event) { delete overrideContext[prop]; } return result; }; Call.prototype.bind = function bind(source) { var _this27 = this; if (this.isBound) { if (this.source === source) { return; } this.unbind(); } this.isBound = true; this.source = source; if (this.sourceExpression.bind) { this.sourceExpression.bind(this, source, this.lookupFunctions); } this.targetProperty.setValue(function ($event) { return _this27.callSource($event); }); }; Call.prototype.unbind = function unbind() { if (!this.isBound) { return; } this.isBound = false; if (this.sourceExpression.unbind) { this.sourceExpression.unbind(this, this.source); } this.source = null; this.targetProperty.setValue(null); }; return Call; }(); var ValueConverterResource = exports.ValueConverterResource = function () { function ValueConverterResource(name) { this.name = name; } ValueConverterResource.convention = function convention(name) { if (name.endsWith('ValueConverter')) { return new ValueConverterResource(camelCase(name.substring(0, name.length - 14))); } }; ValueConverterResource.prototype.initialize = function initialize(container, target) { this.instance = container.get(target); }; ValueConverterResource.prototype.register = function register(registry, name) { registry.registerValueConverter(name || this.name, this.instance); }; ValueConverterResource.prototype.load = function load(container, target) {}; return ValueConverterResource; }(); function valueConverter(nameOrTarget) { if (nameOrTarget === undefined || typeof nameOrTarget === 'string') { return function (target) { _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new ValueConverterResource(nameOrTarget), target); }; } _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new ValueConverterResource(), nameOrTarget); } var BindingBehaviorResource = exports.BindingBehaviorResource = function () { function BindingBehaviorResource(name) { this.name = name; } BindingBehaviorResource.convention = function convention(name) { if (name.endsWith('BindingBehavior')) { return new BindingBehaviorResource(camelCase(name.substring(0, name.length - 15))); } }; BindingBehaviorResource.prototype.initialize = function initialize(container, target) { this.instance = container.get(target); }; BindingBehaviorResource.prototype.register = function register(registry, name) { registry.registerBindingBehavior(name || this.name, this.instance); }; BindingBehaviorResource.prototype.load = function load(container, target) {}; return BindingBehaviorResource; }(); function bindingBehavior(nameOrTarget) { if (nameOrTarget === undefined || typeof nameOrTarget === 'string') { return function (target) { _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new BindingBehaviorResource(nameOrTarget), target); }; } _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new BindingBehaviorResource(), nameOrTarget); } var ListenerExpression = exports.ListenerExpression = function () { function ListenerExpression(eventManager, targetEvent, sourceExpression, delegationStrategy, preventDefault, lookupFunctions) { this.eventManager = eventManager; this.targetEvent = targetEvent; this.sourceExpression = sourceExpression; this.delegationStrategy = delegationStrategy; this.discrete = true; this.preventDefault = preventDefault; this.lookupFunctions = lookupFunctions; } ListenerExpression.prototype.createBinding = function createBinding(target) { return new Listener(this.eventManager, this.targetEvent, this.delegationStrategy, this.sourceExpression, target, this.preventDefault, this.lookupFunctions); }; return ListenerExpression; }(); var Listener = exports.Listener = function () { function Listener(eventManager, targetEvent, delegationStrategy, sourceExpression, target, preventDefault, lookupFunctions) { this.eventManager = eventManager; this.targetEvent = targetEvent; this.delegationStrategy = delegationStrategy; this.sourceExpression = sourceExpression; this.target = target; this.preventDefault = preventDefault; this.lookupFunctions = lookupFunctions; } Listener.prototype.callSource = function callSource(event) { var overrideContext = this.source.overrideContext; overrideContext.$event = event; var mustEvaluate = true; var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate); delete overrideContext.$event; if (result !== true && this.preventDefault) { event.preventDefault(); } return result; }; Listener.prototype.handleEvent = function handleEvent(event) { this.callSource(event); }; Listener.prototype.bind = function bind(source) { if (this.isBound) { if (this.source === source) { return; } this.unbind(); } this.isBound = true; this.source = source; if (this.sourceExpression.bind) { this.sourceExpression.bind(this, source, this.lookupFunctions); } this._disposeListener = this.eventManager.addEventListener(this.target, this.targetEvent, this, this.delegationStrategy); }; Listener.prototype.unbind = function unbind() { if (!this.isBound) { return; } this.isBound = false; if (this.sourceExpression.unbind) { this.sourceExpression.unbind(this, this.source); } this.source = null; this._disposeListener(); this._disposeListener = null; }; return Listener; }(); function getAU(element) { var au = element.au; if (au === undefined) { throw new Error('No Aurelia APIs are defined for the element: "' + element.tagName + '".'); } return au; } var NameExpression = exports.NameExpression = function () { function NameExpression(sourceExpression, apiName, lookupFunctions) { this.sourceExpression = sourceExpression; this.apiName = apiName; this.lookupFunctions = lookupFunctions; this.discrete = true; } NameExpression.prototype.createBinding = function createBinding(target) { return new NameBinder(this.sourceExpression, NameExpression.locateAPI(target, this.apiName), this.lookupFunctions); }; NameExpression.locateAPI = function locateAPI(element, apiName) { switch (apiName) { case 'element': return element; case 'controller': return getAU(element).controller; case 'view-model': return getAU(element).controller.viewModel; case 'view': return getAU(element).controller.view; default: var target = getAU(element)[apiName]; if (target === undefined) { throw new Error('Attempted to reference "' + apiName + '", but it was not found amongst the target\'s API.'); } return target.viewModel; } }; return NameExpression; }(); var NameBinder = function () { function NameBinder(sourceExpression, target, lookupFunctions) { this.sourceExpression = sourceExpression; this.target = target; this.lookupFunctions = lookupFunctions; } NameBinder.prototype.bind = function bind(source) { if (this.isBound) { if (this.source === source) { return; } this.unbind(); } this.isBound = true; this.source = source; if (this.sourceExpression.bind) { this.sourceExpression.bind(this, source, this.lookupFunctions); } this.sourceExpression.assign(this.source, this.target, this.lookupFunctions); }; NameBinder.prototype.unbind = function unbind() { if (!this.isBound) { return; } this.isBound = false; if (this.sourceExpression.evaluate(this.source, this.lookupFunctions) === this.target) { this.sourceExpression.assign(this.source, null, this.lookupFunctions); } if (this.sourceExpression.unbind) { this.sourceExpression.unbind(this, this.source); } this.source = null; }; return NameBinder; }(); var LookupFunctions = { bindingBehaviors: function bindingBehaviors(name) { return null; }, valueConverters: function valueConverters(name) { return null; } }; var BindingEngine = exports.BindingEngine = (_temp2 = _class14 = function () { function BindingEngine(observerLocator, parser) { this.observerLocator = observerLocator; this.parser = parser; } BindingEngine.prototype.createBindingExpression = function createBindingExpression(targetProperty, sourceExpression) { var mode = arguments.length <= 2 || arguments[2] === undefined ? bindingMode.toView : arguments[2]; var lookupFunctions = arguments.length <= 3 || arguments[3] === undefined ? LookupFunctions : arguments[3]; return new BindingExpression(this.observerLocator, targetProperty, this.parser.parse(sourceExpression), mode, lookupFunctions); }; BindingEngine.prototype.propertyObserver = function propertyObserver(obj, propertyName) { var _this28 = this; return { subscribe: function subscribe(callback) { var observer = _this28.observerLocator.getObserver(obj, propertyName); observer.subscribe(callback); return { dispose: function dispose() { return observer.unsubscribe(callback); } }; } }; }; BindingEngine.prototype.collectionObserver = function collectionObserver(collection) { var _this29 = this; return { subscribe: function subscribe(callback) { var observer = void 0; if (collection instanceof Array) { observer = _this29.observerLocator.getArrayObserver(collection); } else if (collection instanceof Map) { observer = _this29.observerLocator.getMapObserver(collection); } else if (collection instanceof Set) { observer = _this29.observerLocator.getSetObserver(collection); } else { throw new Error('collection must be an instance of Array, Map or Set.'); } observer.subscribe(callback); return { dispose: function dispose() { return observer.unsubscribe(callback); } }; } }; }; BindingEngine.prototype.expressionObserver = function expressionObserver(bindingContext, expression) { var scope = { bindingContext: bindingContext, overrideContext: createOverrideContext(bindingContext) }; return new ExpressionObserver(scope, this.parser.parse(expression), this.observerLocator, LookupFunctions); }; BindingEngine.prototype.parseExpression = function parseExpression(expression) { return this.parser.parse(expression); }; BindingEngine.prototype.registerAdapter = function registerAdapter(adapter) { this.observerLocator.addAdapter(adapter); }; return BindingEngine; }(), _class14.inject = [ObserverLocator, Parser], _temp2); var setProto = Set.prototype; function _getSetObserver(taskQueue, set) { return ModifySetObserver.for(taskQueue, set); } exports.getSetObserver = _getSetObserver; var ModifySetObserver = function (_ModifyCollectionObse3) { _inherits(ModifySetObserver, _ModifyCollectionObse3); function ModifySetObserver(taskQueue, set) { return _possibleConstructorReturn(this, _ModifyCollectionObse3.call(this, taskQueue, set)); } ModifySetObserver.for = function _for(taskQueue, set) { if (!('__set_observer__' in set)) { Reflect.defineProperty(set, '__set_observer__', { value: ModifySetObserver.create(taskQueue, set), enumerable: false, configurable: false }); } return set.__set_observer__; }; ModifySetObserver.create = function create(taskQueue, set) { var observer = new ModifySetObserver(taskQueue, set); var proto = setProto; if (proto.add !== set.add || proto.delete !== set.delete || proto.clear !== set.clear) { proto = { add: set.add, delete: set.delete, clear: set.clear }; } set.add = function () { var type = 'add'; var oldSize = set.size; var methodCallResult = proto.add.apply(set, arguments); var hasValue = set.size === oldSize; if (!hasValue) { observer.addChangeRecord({ type: type, object: set, value: Array.from(set).pop() }); } return methodCallResult; }; set.delete = function () { var hasValue = set.has(arguments[0]); var methodCallResult = proto.delete.apply(set, arguments); if (hasValue) { observer.addChangeRecord({ type: 'delete', object: set, value: arguments[0] }); } return methodCallResult; }; set.clear = function () { var methodCallResult = proto.clear.apply(set, arguments); observer.addChangeRecord({ type: 'clear', object: set }); return methodCallResult; }; return observer; }; return ModifySetObserver; }(ModifyCollectionObserver); function observable(targetOrConfig, key, descriptor) { function deco(target, key, descriptor, config) { var isClassDecorator = key === undefined; if (isClassDecorator) { target = target.prototype; key = typeof config === 'string' ? config : config.name; } var innerPropertyName = '_' + key; var innerPropertyDescriptor = { configurable: true, enumerable: false, writable: true }; var callbackName = config && config.changeHandler || key + 'Changed'; if (descriptor) { if (typeof descriptor.initializer === 'function') { innerPropertyDescriptor.value = descriptor.initializer(); } } else { descriptor = {}; } if (!('enumerable' in descriptor)) { descriptor.enumerable = true; } delete descriptor.value; delete descriptor.writable; delete descriptor.initializer; Reflect.defineProperty(target, innerPropertyName, innerPropertyDescriptor); descriptor.get = function () { return this[innerPropertyName]; }; descriptor.set = function (newValue) { var oldValue = this[innerPropertyName]; if (newValue === oldValue) { return; } this[innerPropertyName] = newValue; Reflect.defineProperty(this, innerPropertyName, { enumerable: false }); if (this[callbackName]) { this[callbackName](newValue, oldValue, key); } }; descriptor.get.dependencies = [innerPropertyName]; if (isClassDecorator) { Reflect.defineProperty(target, key, descriptor); } else { return descriptor; } } if (key === undefined) { return function (t, k, d) { return deco(t, k, d, targetOrConfig); }; } return deco(targetOrConfig, key, descriptor); } var signals = {}; function connectBindingToSignal(binding, name) { if (!signals.hasOwnProperty(name)) { signals[name] = 0; } binding.observeProperty(signals, name); } function signalBindings(name) { if (signals.hasOwnProperty(name)) { signals[name]++; } } }); define('aurelia-bootstrapper',['exports', 'aurelia-pal', 'aurelia-pal-browser', 'aurelia-polyfills'], function (exports, _aureliaPal, _aureliaPalBrowser) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.bootstrap = bootstrap; var bootstrapQueue = []; var sharedLoader = null; var Aurelia = null; function onBootstrap(callback) { return new Promise(function (resolve, reject) { if (sharedLoader) { resolve(callback(sharedLoader)); } else { bootstrapQueue.push(function () { try { resolve(callback(sharedLoader)); } catch (e) { reject(e); } }); } }); } function ready(global) { return new Promise(function (resolve, reject) { if (global.document.readyState === 'complete') { resolve(global.document); } else { global.document.addEventListener('DOMContentLoaded', completed); global.addEventListener('load', completed); } function completed() { global.document.removeEventListener('DOMContentLoaded', completed); global.removeEventListener('load', completed); resolve(global.document); } }); } function createLoader() { if (_aureliaPal.PLATFORM.Loader) { return Promise.resolve(new _aureliaPal.PLATFORM.Loader()); } if (window.System && typeof window.System.import === 'function') { return System.normalize('aurelia-bootstrapper').then(function (bootstrapperName) { return System.normalize('aurelia-loader-default', bootstrapperName); }).then(function (loaderName) { return System.import(loaderName).then(function (m) { return new m.DefaultLoader(); }); }); } if (typeof window.require === 'function') { return new Promise(function (resolve, reject) { return require(['aurelia-loader-default'], function (m) { return resolve(new m.DefaultLoader()); }, reject); }); } return Promise.reject('No PLATFORM.Loader is defined and there is neither a System API (ES6) or a Require API (AMD) globally available to load your app.'); } function preparePlatform(loader) { return loader.normalize('aurelia-bootstrapper').then(function (bootstrapperName) { return loader.normalize('aurelia-framework', bootstrapperName).then(function (frameworkName) { loader.map('aurelia-framework', frameworkName); return Promise.all([loader.normalize('aurelia-dependency-injection', frameworkName).then(function (diName) { return loader.map('aurelia-dependency-injection', diName); }), loader.normalize('aurelia-router', bootstrapperName).then(function (routerName) { return loader.map('aurelia-router', routerName); }), loader.normalize('aurelia-logging-console', bootstrapperName).then(function (loggingConsoleName) { return loader.map('aurelia-logging-console', loggingConsoleName); })]).then(function () { return loader.loadModule(frameworkName).then(function (m) { return Aurelia = m.Aurelia; }); }); }); }); } function handleApp(loader, appHost) { var moduleId = appHost.getAttribute('aurelia-app') || appHost.getAttribute('data-aurelia-app'); return config(loader, appHost, moduleId); } function config(loader, appHost, configModuleId) { var aurelia = new Aurelia(loader); aurelia.host = appHost; aurelia.configModuleId = configModuleId || null; if (configModuleId) { return loader.loadModule(configModuleId).then(function (customConfig) { if (!customConfig.configure) { throw new Error("Cannot initialize module '" + configModuleId + "' without a configure function."); } customConfig.configure(aurelia); }); } aurelia.use.standardConfiguration().developmentLogging(); return aurelia.start().then(function () { return aurelia.setRoot(); }); } function run() { return ready(window).then(function (doc) { (0, _aureliaPalBrowser.initialize)(); var appHost = doc.querySelectorAll('[aurelia-app],[data-aurelia-app]'); return createLoader().then(function (loader) { return preparePlatform(loader).then(function () { for (var i = 0, ii = appHost.length; i < ii; ++i) { handleApp(loader, appHost[i]).catch(console.error.bind(console)); } sharedLoader = loader; for (var _i = 0, _ii = bootstrapQueue.length; _i < _ii; ++_i) { bootstrapQueue[_i](); } bootstrapQueue = null; }); }); }); } function bootstrap(configure) { return onBootstrap(function (loader) { var aurelia = new Aurelia(loader); return configure(aurelia); }); } run(); }); define('aurelia-dependency-injection',['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aureliaMetadata, _aureliaPal) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Container = exports.InvocationHandler = exports._emptyParameters = exports.SingletonRegistration = exports.TransientRegistration = exports.FactoryInvoker = exports.NewInstance = exports.Factory = exports.StrategyResolver = exports.Parent = exports.Optional = exports.All = exports.Lazy = exports.resolver = undefined; exports.getDecoratorDependencies = getDecoratorDependencies; exports.lazy = lazy; exports.all = all; exports.optional = optional; exports.parent = parent; exports.factory = factory; exports.newInstance = newInstance; exports.invoker = invoker; exports.invokeAsFactory = invokeAsFactory; exports.registration = registration; exports.transient = transient; exports.singleton = singleton; exports.autoinject = autoinject; exports.inject = inject; var _dec, _class, _dec2, _class3, _dec3, _class5, _dec4, _class7, _dec5, _class9, _dec6, _class11, _dec7, _class13, _classInvokers; var resolver = exports.resolver = _aureliaMetadata.protocol.create('aurelia:resolver', function (target) { if (!(typeof target.get === 'function')) { return 'Resolvers must implement: get(container: Container, key: any): any'; } return true; }); var Lazy = exports.Lazy = (_dec = resolver(), _dec(_class = function () { function Lazy(key) { this._key = key; } Lazy.prototype.get = function get(container) { var _this = this; return function () { return container.get(_this._key); }; }; Lazy.of = function of(key) { return new Lazy(key); }; return Lazy; }()) || _class); var All = exports.All = (_dec2 = resolver(), _dec2(_class3 = function () { function All(key) { this._key = key; } All.prototype.get = function get(container) { return container.getAll(this._key); }; All.of = function of(key) { return new All(key); }; return All; }()) || _class3); var Optional = exports.Optional = (_dec3 = resolver(), _dec3(_class5 = function () { function Optional(key) { var checkParent = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; this._key = key; this._checkParent = checkParent; } Optional.prototype.get = function get(container) { if (container.hasResolver(this._key, this._checkParent)) { return container.get(this._key); } return null; }; Optional.of = function of(key) { var checkParent = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; return new Optional(key, checkParent); }; return Optional; }()) || _class5); var Parent = exports.Parent = (_dec4 = resolver(), _dec4(_class7 = function () { function Parent(key) { this._key = key; } Parent.prototype.get = function get(container) { return container.parent ? container.parent.get(this._key) : null; }; Parent.of = function of(key) { return new Parent(key); }; return Parent; }()) || _class7); var StrategyResolver = exports.StrategyResolver = (_dec5 = resolver(), _dec5(_class9 = function () { function StrategyResolver(strategy, state) { this.strategy = strategy; this.state = state; } StrategyResolver.prototype.get = function get(container, key) { switch (this.strategy) { case 0: return this.state; case 1: var singleton = container.invoke(this.state); this.state = singleton; this.strategy = 0; return singleton; case 2: return container.invoke(this.state); case 3: return this.state(container, key, this); case 4: return this.state[0].get(container, key); case 5: return container.get(this.state); default: throw new Error('Invalid strategy: ' + this.strategy); } }; return StrategyResolver; }()) || _class9); var Factory = exports.Factory = (_dec6 = resolver(), _dec6(_class11 = function () { function Factory(key) { this._key = key; } Factory.prototype.get = function get(container) { var _this2 = this; return function () { for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) { rest[_key] = arguments[_key]; } return container.invoke(_this2._key, rest); }; }; Factory.of = function of(key) { return new Factory(key); }; return Factory; }()) || _class11); var NewInstance = exports.NewInstance = (_dec7 = resolver(), _dec7(_class13 = function () { function NewInstance(key) { this.key = key; this.asKey = key; for (var _len2 = arguments.length, dynamicDependencies = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { dynamicDependencies[_key2 - 1] = arguments[_key2]; } this.dynamicDependencies = dynamicDependencies; } NewInstance.prototype.get = function get(container) { var dynamicDependencies = this.dynamicDependencies.length > 0 ? this.dynamicDependencies.map(function (dependency) { return dependency['protocol:aurelia:resolver'] ? dependency.get(container) : container.get(dependency); }) : undefined; var instance = container.invoke(this.key, dynamicDependencies); container.registerInstance(this.asKey, instance); return instance; }; NewInstance.prototype.as = function as(key) { this.asKey = key; return this; }; NewInstance.of = function of(key) { for (var _len3 = arguments.length, dynamicDependencies = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { dynamicDependencies[_key3 - 1] = arguments[_key3]; } return new (Function.prototype.bind.apply(NewInstance, [null].concat([key], dynamicDependencies)))(); }; return NewInstance; }()) || _class13); function getDecoratorDependencies(target, name) { var dependencies = target.inject; if (typeof dependencies === 'function') { throw new Error('Decorator ' + name + ' cannot be used with "inject()". Please use an array instead.'); } if (!dependencies) { dependencies = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target).slice(); target.inject = dependencies; } return dependencies; } function lazy(keyValue) { return function (target, key, index) { var params = getDecoratorDependencies(target, 'lazy'); params[index] = Lazy.of(keyValue); }; } function all(keyValue) { return function (target, key, index) { var params = getDecoratorDependencies(target, 'all'); params[index] = All.of(keyValue); }; } function optional() { var checkParentOrTarget = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; var deco = function deco(checkParent) { return function (target, key, index) { var params = getDecoratorDependencies(target, 'optional'); params[index] = Optional.of(params[index], checkParent); }; }; if (typeof checkParentOrTarget === 'boolean') { return deco(checkParentOrTarget); } return deco(true); } function parent(target, key, index) { var params = getDecoratorDependencies(target, 'parent'); params[index] = Parent.of(params[index]); } function factory(keyValue, asValue) { return function (target, key, index) { var params = getDecoratorDependencies(target, 'factory'); var factory = Factory.of(keyValue); params[index] = asValue ? factory.as(asValue) : factory; }; } function newInstance(asKeyOrTarget) { for (var _len4 = arguments.length, dynamicDependencies = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { dynamicDependencies[_key4 - 1] = arguments[_key4]; } var deco = function deco(asKey) { return function (target, key, index) { var params = getDecoratorDependencies(target, 'newInstance'); params[index] = NewInstance.of.apply(NewInstance, [params[index]].concat(dynamicDependencies)); if (!!asKey) { params[index].as(asKey); } }; }; if (arguments.length >= 1) { return deco(asKeyOrTarget); } return deco(); } function invoker(value) { return function (target) { _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.invoker, value, target); }; } function invokeAsFactory(potentialTarget) { var deco = function deco(target) { _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target); }; return potentialTarget ? deco(potentialTarget) : deco; } var FactoryInvoker = exports.FactoryInvoker = function () { function FactoryInvoker() { } FactoryInvoker.prototype.invoke = function invoke(container, fn, dependencies) { var i = dependencies.length; var args = new Array(i); while (i--) { args[i] = container.get(dependencies[i]); } return fn.apply(undefined, args); }; FactoryInvoker.prototype.invokeWithDynamicDependencies = function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) { var i = staticDependencies.length; var args = new Array(i); while (i--) { args[i] = container.get(staticDependencies[i]); } if (dynamicDependencies !== undefined) { args = args.concat(dynamicDependencies); } return fn.apply(undefined, args); }; return FactoryInvoker; }(); FactoryInvoker.instance = new FactoryInvoker(); function registration(value) { return function (target) { _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.registration, value, target); }; } function transient(key) { return registration(new TransientRegistration(key)); } function singleton(keyOrRegisterInChild) { var registerInChild = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild)); } var TransientRegistration = exports.TransientRegistration = function () { function TransientRegistration(key) { this._key = key; } TransientRegistration.prototype.registerResolver = function registerResolver(container, key, fn) { var existingResolver = container.getResolver(this._key || key); return existingResolver === undefined ? container.registerTransient(this._key || key, fn) : existingResolver; }; return TransientRegistration; }(); var SingletonRegistration = exports.SingletonRegistration = function () { function SingletonRegistration(keyOrRegisterInChild) { var registerInChild = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; if (typeof keyOrRegisterInChild === 'boolean') { this._registerInChild = keyOrRegisterInChild; } else { this._key = keyOrRegisterInChild; this._registerInChild = registerInChild; } } SingletonRegistration.prototype.registerResolver = function registerResolver(container, key, fn) { var targetContainer = this._registerInChild ? container : container.root; var existingResolver = targetContainer.getResolver(this._key || key); return existingResolver === undefined ? targetContainer.registerSingleton(this._key || key, fn) : existingResolver; }; return SingletonRegistration; }(); function validateKey(key) { if (key === null || key === undefined) { throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?'); } } var _emptyParameters = exports._emptyParameters = Object.freeze([]); _aureliaMetadata.metadata.registration = 'aurelia:registration'; _aureliaMetadata.metadata.invoker = 'aurelia:invoker'; var resolverDecorates = resolver.decorates; var InvocationHandler = exports.InvocationHandler = function () { function InvocationHandler(fn, invoker, dependencies) { this.fn = fn; this.invoker = invoker; this.dependencies = dependencies; } InvocationHandler.prototype.invoke = function invoke(container, dynamicDependencies) { return dynamicDependencies !== undefined ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies) : this.invoker.invoke(container, this.fn, this.dependencies); }; return InvocationHandler; }(); function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) { var i = staticDependencies.length; var args = new Array(i); var lookup = void 0; while (i--) { lookup = staticDependencies[i]; if (lookup === null || lookup === undefined) { throw new Error('Constructor Parameter with index ' + i + ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?'); } else { args[i] = container.get(lookup); } } if (dynamicDependencies !== undefined) { args = args.concat(dynamicDependencies); } return Reflect.construct(fn, args); } var classInvokers = (_classInvokers = {}, _classInvokers[0] = { invoke: function invoke(container, Type) { return new Type(); }, invokeWithDynamicDependencies: invokeWithDynamicDependencies }, _classInvokers[1] = { invoke: function invoke(container, Type, deps) { return new Type(container.get(deps[0])); }, invokeWithDynamicDependencies: invokeWithDynamicDependencies }, _classInvokers[2] = { invoke: function invoke(container, Type, deps) { return new Type(container.get(deps[0]), container.get(deps[1])); }, invokeWithDynamicDependencies: invokeWithDynamicDependencies }, _classInvokers[3] = { invoke: function invoke(container, Type, deps) { return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2])); }, invokeWithDynamicDependencies: invokeWithDynamicDependencies }, _classInvokers[4] = { invoke: function invoke(container, Type, deps) { return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3])); }, invokeWithDynamicDependencies: invokeWithDynamicDependencies }, _classInvokers[5] = { invoke: function invoke(container, Type, deps) { return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3]), container.get(deps[4])); }, invokeWithDynamicDependencies: invokeWithDynamicDependencies }, _classInvokers.fallback = { invoke: invokeWithDynamicDependencies, invokeWithDynamicDependencies: invokeWithDynamicDependencies }, _classInvokers); function getDependencies(f) { if (!f.hasOwnProperty('inject')) { return []; } if (typeof f.inject === 'function') { return f.inject(); } return f.inject; } var Container = exports.Container = function () { function Container(configuration) { if (configuration === undefined) { configuration = {}; } this._configuration = configuration; this._onHandlerCreated = configuration.onHandlerCreated; this._handlers = configuration.handlers || (configuration.handlers = new Map()); this._resolvers = new Map(); this.root = this; this.parent = null; } Container.prototype.makeGlobal = function makeGlobal() { Container.instance = this; return this; }; Container.prototype.setHandlerCreatedCallback = function setHandlerCreatedCallback(onHandlerCreated) { this._onHandlerCreated = onHandlerCreated; this._configuration.onHandlerCreated = onHandlerCreated; }; Container.prototype.registerInstance = function registerInstance(key, instance) { return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance)); }; Container.prototype.registerSingleton = function registerSingleton(key, fn) { return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn)); }; Container.prototype.registerTransient = function registerTransient(key, fn) { return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn)); }; Container.prototype.registerHandler = function registerHandler(key, handler) { return this.registerResolver(key, new StrategyResolver(3, handler)); }; Container.prototype.registerAlias = function registerAlias(originalKey, aliasKey) { return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey)); }; Container.prototype.registerResolver = function registerResolver(key, resolver) { validateKey(key); var allResolvers = this._resolvers; var result = allResolvers.get(key); if (result === undefined) { allResolvers.set(key, resolver); } else if (result.strategy === 4) { result.state.push(resolver); } else { allResolvers.set(key, new StrategyResolver(4, [result, resolver])); } return resolver; }; Container.prototype.autoRegister = function autoRegister(key, fn) { fn = fn === undefined ? key : fn; if (typeof fn === 'function') { var _registration = _aureliaMetadata.metadata.get(_aureliaMetadata.metadata.registration, fn); if (_registration === undefined) { return this.registerResolver(key, new StrategyResolver(1, fn)); } return _registration.registerResolver(this, key, fn); } return this.registerResolver(key, new StrategyResolver(0, fn)); }; Container.prototype.autoRegisterAll = function autoRegisterAll(fns) { var i = fns.length; while (i--) { this.autoRegister(fns[i]); } }; Container.prototype.unregister = function unregister(key) { this._resolvers.delete(key); }; Container.prototype.hasResolver = function hasResolver(key) { var checkParent = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; validateKey(key); return this._resolvers.has(key) || checkParent && this.parent !== null && this.parent.hasResolver(key, checkParent); }; Container.prototype.getResolver = function getResolver(key) { return this._resolvers.get(key); }; Container.prototype.get = function get(key) { validateKey(key); if (key === Container) { return this; } if (resolverDecorates(key)) { return key.get(this, key); } var resolver = this._resolvers.get(key); if (resolver === undefined) { if (this.parent === null) { return this.autoRegister(key).get(this, key); } var _registration2 = _aureliaMetadata.metadata.get(_aureliaMetadata.metadata.registration, key); if (_registration2 === undefined) { return this.parent._get(key); } return _registration2.registerResolver(this, key, key).get(this, key); } return resolver.get(this, key); }; Container.prototype._get = function _get(key) { var resolver = this._resolvers.get(key); if (resolver === undefined) { if (this.parent === null) { return this.autoRegister(key).get(this, key); } return this.parent._get(key); } return resolver.get(this, key); }; Container.prototype.getAll = function getAll(key) { validateKey(key); var resolver = this._resolvers.get(key); if (resolver === undefined) { if (this.parent === null) { return _emptyParameters; } return this.parent.getAll(key); } if (resolver.strategy === 4) { var state = resolver.state; var i = state.length; var results = new Array(i); while (i--) { results[i] = state[i].get(this, key); } return results; } return [resolver.get(this, key)]; }; Container.prototype.createChild = function createChild() { var child = new Container(this._configuration); child.root = this.root; child.parent = this; return child; }; Container.prototype.invoke = function invoke(fn, dynamicDependencies) { try { var _handler = this._handlers.get(fn); if (_handler === undefined) { _handler = this._createInvocationHandler(fn); this._handlers.set(fn, _handler); } return _handler.invoke(this, dynamicDependencies); } catch (e) { throw new _aureliaPal.AggregateError('Error invoking ' + fn.name + '. Check the inner error for details.', e, true); } }; Container.prototype._createInvocationHandler = function _createInvocationHandler(fn) { var dependencies = void 0; if (fn.inject === undefined) { dependencies = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters; } else { dependencies = []; var ctor = fn; while (typeof ctor === 'function') { var _dependencies; (_dependencies = dependencies).push.apply(_dependencies, getDependencies(ctor)); ctor = Object.getPrototypeOf(ctor); } } var invoker = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.invoker, fn) || classInvokers[dependencies.length] || classInvokers.fallback; var handler = new InvocationHandler(fn, invoker, dependencies); return this._onHandlerCreated !== undefined ? this._onHandlerCreated(handler) : handler; }; return Container; }(); function autoinject(potentialTarget) { var deco = function deco(target) { var previousInject = target.inject ? target.inject.slice() : null; var autoInject = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target) || _emptyParameters; if (!previousInject) { target.inject = autoInject; } else { for (var i = 0; i < autoInject.length; i++) { if (previousInject[i] && previousInject[i] !== autoInject[i]) { var prevIndex = previousInject.indexOf(autoInject[i]); if (prevIndex > -1) { previousInject.splice(prevIndex, 1); } previousInject.splice(prevIndex > -1 && prevIndex < i ? i - 1 : i, 0, autoInject[i]); } else if (!previousInject[i]) { previousInject[i] = autoInject[i]; } } target.inject = previousInject; } }; return potentialTarget ? deco(potentialTarget) : deco; } function inject() { for (var _len5 = arguments.length, rest = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { rest[_key5] = arguments[_key5]; } return function (target, key, descriptor) { if (typeof descriptor === 'number' && rest.length === 1) { var params = target.inject; if (typeof params === 'function') { throw new Error('Decorator inject cannot be used with "inject()". Please use an array instead.'); } if (!params) { params = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target).slice(); target.inject = params; } params[descriptor] = rest[0]; return; } if (descriptor) { var _fn = descriptor.value; _fn.inject = rest; } else { target.inject = rest; } }; } }); define('aurelia-event-aggregator',['exports', 'aurelia-logging'], function (exports, _aureliaLogging) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventAggregator = undefined; exports.includeEventsIn = includeEventsIn; exports.configure = configure; var LogManager = _interopRequireWildcard(_aureliaLogging); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } var logger = LogManager.getLogger('event-aggregator'); var Handler = function () { function Handler(messageType, callback) { this.messageType = messageType; this.callback = callback; } Handler.prototype.handle = function handle(message) { if (message instanceof this.messageType) { this.callback.call(null, message); } }; return Handler; }(); function invokeCallback(callback, data, event) { try { callback(data, event); } catch (e) { logger.error(e); } } function invokeHandler(handler, data) { try { handler.handle(data); } catch (e) { logger.error(e); } } var EventAggregator = exports.EventAggregator = function () { function EventAggregator() { this.eventLookup = {}; this.messageHandlers = []; } EventAggregator.prototype.publish = function publish(event, data) { var subscribers = void 0; var i = void 0; if (!event) { throw new Error('Event was invalid.'); } if (typeof event === 'string') { subscribers = this.eventLookup[event]; if (subscribers) { subscribers = subscribers.slice(); i = subscribers.length; while (i--) { invokeCallback(subscribers[i], data, event); } } } else { subscribers = this.messageHandlers.slice(); i = subscribers.length; while (i--) { invokeHandler(subscribers[i], event); } } }; EventAggregator.prototype.subscribe = function subscribe(event, callback) { var handler = void 0; var subscribers = void 0; if (!event) { throw new Error('Event channel/type was invalid.'); } if (typeof event === 'string') { handler = callback; subscribers = this.eventLookup[event] || (this.eventLookup[event] = []); } else { handler = new Handler(event, callback); subscribers = this.messageHandlers; } subscribers.push(handler); return { dispose: function dispose() { var idx = subscribers.indexOf(handler); if (idx !== -1) { subscribers.splice(idx, 1); } } }; }; EventAggregator.prototype.subscribeOnce = function subscribeOnce(event, callback) { var sub = this.subscribe(event, function (a, b) { sub.dispose(); return callback(a, b); }); return sub; }; return EventAggregator; }(); function includeEventsIn(obj) { var ea = new EventAggregator(); obj.subscribeOnce = function (event, callback) { return ea.subscribeOnce(event, callback); }; obj.subscribe = function (event, callback) { return ea.subscribe(event, callback); }; obj.publish = function (event, data) { ea.publish(event, data); }; return ea; } function configure(config) { config.instance(EventAggregator, includeEventsIn(config.aurelia)); } }); define('aurelia-framework',['exports', 'aurelia-dependency-injection', 'aurelia-binding', 'aurelia-metadata', 'aurelia-templating', 'aurelia-loader', 'aurelia-task-queue', 'aurelia-path', 'aurelia-pal', 'aurelia-logging'], function (exports, _aureliaDependencyInjection, _aureliaBinding, _aureliaMetadata, _aureliaTemplating, _aureliaLoader, _aureliaTaskQueue, _aureliaPath, _aureliaPal, _aureliaLogging) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.LogManager = exports.FrameworkConfiguration = exports.Aurelia = undefined; Object.keys(_aureliaDependencyInjection).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaDependencyInjection[key]; } }); }); Object.keys(_aureliaBinding).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaBinding[key]; } }); }); Object.keys(_aureliaMetadata).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaMetadata[key]; } }); }); Object.keys(_aureliaTemplating).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaTemplating[key]; } }); }); Object.keys(_aureliaLoader).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaLoader[key]; } }); }); Object.keys(_aureliaTaskQueue).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaTaskQueue[key]; } }); }); Object.keys(_aureliaPath).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaPath[key]; } }); }); Object.keys(_aureliaPal).forEach(function (key) { if (key === "default" || key === "__esModule") return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _aureliaPal[key]; } }); }); var TheLogManager = _interopRequireWildcard(_aureliaLogging); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function preventActionlessFormSubmit() { _aureliaPal.DOM.addEventListener('submit', function (evt) { var target = evt.target; var action = target.action; if (target.tagName.toLowerCase() === 'form' && !action) { evt.preventDefault(); } }); } var Aurelia = exports.Aurelia = function () { function Aurelia(loader, container, resources) { this.loader = loader || new _aureliaPal.PLATFORM.Loader(); this.container = container || new _aureliaDependencyInjection.Container().makeGlobal(); this.resources = resources || new _aureliaTemplating.ViewResources(); this.use = new FrameworkConfiguration(this); this.logger = TheLogManager.getLogger('aurelia'); this.hostConfigured = false; this.host = null; this.use.instance(Aurelia, this); this.use.instance(_aureliaLoader.Loader, this.loader); this.use.instance(_aureliaTemplating.ViewResources, this.resources); } Aurelia.prototype.start = function start() { var _this = this; if (this._started) { return this._started; } this.logger.info('Aurelia Starting'); return this._started = this.use.apply().then(function () { preventActionlessFormSubmit(); if (!_this.container.hasResolver(_aureliaTemplating.BindingLanguage)) { var message = 'You must configure Aurelia with a BindingLanguage implementation.'; _this.logger.error(message); throw new Error(message); } _this.logger.info('Aurelia Started'); var evt = _aureliaPal.DOM.createCustomEvent('aurelia-started', { bubbles: true, cancelable: true }); _aureliaPal.DOM.dispatchEvent(evt); return _this; }); }; Aurelia.prototype.enhance = function enhance() { var _this2 = this; var bindingContext = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var applicationHost = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; this._configureHost(applicationHost || _aureliaPal.DOM.querySelectorAll('body')[0]); return new Promise(function (resolve) { var engine = _this2.container.get(_aureliaTemplating.TemplatingEngine); _this2.root = engine.enhance({ container: _this2.container, element: _this2.host, resources: _this2.resources, bindingContext: bindingContext }); _this2.root.attached(); _this2._onAureliaComposed(); resolve(_this2); }); }; Aurelia.prototype.setRoot = function setRoot() { var _this3 = this; var root = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; var applicationHost = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; var instruction = {}; if (this.root && this.root.viewModel && this.root.viewModel.router) { this.root.viewModel.router.deactivate(); this.root.viewModel.router.reset(); } this._configureHost(applicationHost); var engine = this.container.get(_aureliaTemplating.TemplatingEngine); var transaction = this.container.get(_aureliaTemplating.CompositionTransaction); delete transaction.initialComposition; if (!root) { if (this.configModuleId) { root = (0, _aureliaPath.relativeToFile)('./app', this.configModuleId); } else { root = 'app'; } } instruction.viewModel = root; instruction.container = instruction.childContainer = this.container; instruction.viewSlot = this.hostSlot; instruction.host = this.host; return engine.compose(instruction).then(function (r) { _this3.root = r; instruction.viewSlot.attached(); _this3._onAureliaComposed(); return _this3; }); }; Aurelia.prototype._configureHost = function _configureHost(applicationHost) { if (this.hostConfigured) { return; } applicationHost = applicationHost || this.host; if (!applicationHost || typeof applicationHost === 'string') { this.host = _aureliaPal.DOM.getElementById(applicationHost || 'applicationHost'); } else { this.host = applicationHost; } if (!this.host) { throw new Error('No applicationHost was specified.'); } this.hostConfigured = true; this.host.aurelia = this; this.hostSlot = new _aureliaTemplating.ViewSlot(this.host, true); this.hostSlot.transformChildNodesIntoView(); this.container.registerInstance(_aureliaPal.DOM.boundary, this.host); }; Aurelia.prototype._onAureliaComposed = function _onAureliaComposed() { var evt = _aureliaPal.DOM.createCustomEvent('aurelia-composed', { bubbles: true, cancelable: true }); setTimeout(function () { return _aureliaPal.DOM.dispatchEvent(evt); }, 1); }; return Aurelia; }(); var logger = TheLogManager.getLogger('aurelia'); var extPattern = /\.[^/.]+$/; function runTasks(config, tasks) { var current = void 0; var next = function next() { current = tasks.shift(); if (current) { return Promise.resolve(current(config)).then(next); } return Promise.resolve(); }; return next(); } function loadPlugin(config, loader, info) { logger.debug('Loading plugin ' + info.moduleId + '.'); config.resourcesRelativeTo = info.resourcesRelativeTo; var id = info.moduleId; if (info.resourcesRelativeTo.length > 1) { return loader.normalize(info.moduleId, info.resourcesRelativeTo[1]).then(function (normalizedId) { return _loadPlugin(normalizedId); }); } return _loadPlugin(id); function _loadPlugin(moduleId) { return loader.loadModule(moduleId).then(function (m) { if ('configure' in m) { return Promise.resolve(m.configure(config, info.config || {})).then(function () { config.resourcesRelativeTo = null; logger.debug('Configured plugin ' + info.moduleId + '.'); }); } config.resourcesRelativeTo = null; logger.debug('Loaded plugin ' + info.moduleId + '.'); }); } } function loadResources(aurelia, resourcesToLoad, appResources) { var viewEngine = aurelia.container.get(_aureliaTemplating.ViewEngine); return Promise.all(Object.keys(resourcesToLoad).map(function (n) { return _normalize(resourcesToLoad[n]); })).then(function (loads) { var names = []; var importIds = []; loads.forEach(function (l) { names.push(undefined); importIds.push(l.importId); }); return viewEngine.importViewResources(importIds, names, appResources); }); function _normalize(load) { var moduleId = load.moduleId; var ext = getExt(moduleId); if (isOtherResource(moduleId)) { moduleId = removeExt(moduleId); } return aurelia.loader.normalize(moduleId, load.relativeTo).then(function (normalized) { return { name: load.moduleId, importId: isOtherResource(load.moduleId) ? addOriginalExt(normalized, ext) : normalized }; }); } function isOtherResource(name) { var ext = getExt(name); if (!ext) return false; if (ext === '') return false; if (ext === '.js' || ext === '.ts') return false; return true; } function removeExt(name) { return name.replace(extPattern, ''); } function addOriginalExt(normalized, ext) { return removeExt(normalized) + '.' + ext; } } function getExt(name) { var match = name.match(extPattern); if (match && match.length > 0) { return match[0].split('.')[1]; } } function assertProcessed(plugins) { if (plugins.processed) { throw new Error('This config instance has already been applied. To load more plugins or global resources, create a new FrameworkConfiguration instance.'); } } var FrameworkConfiguration = function () { function FrameworkConfiguration(aurelia) { var _this4 = this; this.aurelia = aurelia; this.container = aurelia.container; this.info = []; this.processed = false; this.preTasks = []; this.postTasks = []; this.resourcesToLoad = {}; this.preTask(function () { return aurelia.loader.normalize('aurelia-bootstrapper').then(function (name) { return _this4.bootstrapperName = name; }); }); this.postTask(function () { return loadResources(aurelia, _this4.resourcesToLoad, aurelia.resources); }); } FrameworkConfiguration.prototype.instance = function instance(type, _instance) { this.container.registerInstance(type, _instance); return this; }; FrameworkConfiguration.prototype.singleton = function singleton(type, implementation) { this.container.registerSingleton(type, implementation); return this; }; FrameworkConfiguration.prototype.transient = function transient(type, implementation) { this.container.registerTransient(type, implementation); return this; }; FrameworkConfiguration.prototype.preTask = function preTask(task) { assertProcessed(this); this.preTasks.push(task); return this; }; FrameworkConfiguration.prototype.postTask = function postTask(task) { assertProcessed(this); this.postTasks.push(task); return this; }; FrameworkConfiguration.prototype.feature = function feature(plugin) { var config = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var hasIndex = /\/index$/i.test(plugin); var moduleId = hasIndex || getExt(plugin) ? plugin : plugin + '/index'; var root = hasIndex ? plugin.substr(0, plugin.length - 6) : plugin; return this.plugin({ moduleId: moduleId, resourcesRelativeTo: [root, ''], config: config }); }; FrameworkConfiguration.prototype.globalResources = function globalResources(resources) { assertProcessed(this); var toAdd = Array.isArray(resources) ? resources : arguments; var resource = void 0; var resourcesRelativeTo = this.resourcesRelativeTo || ['', '']; for (var i = 0, ii = toAdd.length; i < ii; ++i) { resource = toAdd[i]; if (typeof resource !== 'string') { throw new Error('Invalid resource path [' + resource + ']. Resources must be specified as relative module IDs.'); } var parent = resourcesRelativeTo[0]; var grandParent = resourcesRelativeTo[1]; var name = resource; if ((resource.startsWith('./') || resource.startsWith('../')) && parent !== '') { name = (0, _aureliaPath.join)(parent, resource); } this.resourcesToLoad[name] = { moduleId: name, relativeTo: grandParent }; } return this; }; FrameworkConfiguration.prototype.globalName = function globalName(resourcePath, newName) { assertProcessed(this); this.resourcesToLoad[resourcePath] = { moduleId: newName, relativeTo: '' }; return this; }; FrameworkConfiguration.prototype.plugin = function plugin(_plugin, config) { assertProcessed(this); if (typeof _plugin === 'string') { return this.plugin({ moduleId: _plugin, resourcesRelativeTo: [_plugin, ''], config: config || {} }); } this.info.push(_plugin); return this; }; FrameworkConfiguration.prototype._addNormalizedPlugin = function _addNormalizedPlugin(name, config) { var _this5 = this; var plugin = { moduleId: name, resourcesRelativeTo: [name, ''], config: config || {} }; this.plugin(plugin); this.preTask(function () { var relativeTo = [name, _this5.bootstrapperName]; plugin.moduleId = name; plugin.resourcesRelativeTo = relativeTo; return Promise.resolve(); }); return this; }; FrameworkConfiguration.prototype.defaultBindingLanguage = function defaultBindingLanguage() { return this._addNormalizedPlugin('aurelia-templating-binding'); }; FrameworkConfiguration.prototype.router = function router() { return this._addNormalizedPlugin('aurelia-templating-router'); }; FrameworkConfiguration.prototype.history = function history() { return this._addNormalizedPlugin('aurelia-history-browser'); }; FrameworkConfiguration.prototype.defaultResources = function defaultResources() { return this._addNormalizedPlugin('aurelia-templating-resources'); }; FrameworkConfiguration.prototype.eventAggregator = function eventAggregator() { return this._addNormalizedPlugin('aurelia-event-aggregator'); }; FrameworkConfiguration.prototype.basicConfiguration = function basicConfiguration() { return this.defaultBindingLanguage().defaultResources().eventAggregator(); }; FrameworkConfiguration.prototype.standardConfiguration = function standardConfiguration() { return this.basicConfiguration().history().router(); }; FrameworkConfiguration.prototype.developmentLogging = function developmentLogging() { var _this6 = this; this.preTask(function () { return _this6.aurelia.loader.normalize('aurelia-logging-console', _this6.bootstrapperName).then(function (name) { return _this6.aurelia.loader.loadModule(name).then(function (m) { TheLogManager.addAppender(new m.ConsoleAppender()); TheLogManager.setLevel(TheLogManager.logLevel.debug); }); }); }); return this; }; FrameworkConfiguration.prototype.apply = function apply() { var _this7 = this; if (this.processed) { return Promise.resolve(); } return runTasks(this, this.preTasks).then(function () { var loader = _this7.aurelia.loader; var info = _this7.info; var current = void 0; var next = function next() { current = info.shift(); if (current) { return loadPlugin(_this7, loader, current).then(next); } _this7.processed = true; return Promise.resolve(); }; return next().then(function () { return runTasks(_this7, _this7.postTasks); }); }); }; return FrameworkConfiguration; }(); exports.FrameworkConfiguration = FrameworkConfiguration; var LogManager = exports.LogManager = TheLogManager; }); define('aurelia-history',['exports'], function (exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function mi(name) { throw new Error('History must implement ' + name + '().'); } var History = exports.History = function () { function History() { } History.prototype.activate = function activate(options) { mi('activate'); }; History.prototype.deactivate = function deactivate() { mi('deactivate'); }; History.prototype.getAbsoluteRoot = function getAbsoluteRoot() { mi('getAbsoluteRoot'); }; History.prototype.navigate = function navigate(fragment, options) { mi('navigate'); }; History.prototype.navigateBack = function navigateBack() { mi('navigateBack'); }; History.prototype.setTitle = function setTitle(title) { mi('setTitle'); }; History.prototype.setState = function setState(key, value) { mi('setState'); }; History.prototype.getState = function getState(key) { mi('getState'); }; return History; }(); }); define('aurelia-history-browser',['exports', 'aurelia-pal', 'aurelia-history'], function (exports, _aureliaPal, _aureliaHistory) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.BrowserHistory = exports.DefaultLinkHandler = exports.LinkHandler = undefined; exports.configure = configure; var _class, _temp; function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var LinkHandler = exports.LinkHandler = function () { function LinkHandler() { } LinkHandler.prototype.activate = function activate(history) {}; LinkHandler.prototype.deactivate = function deactivate() {}; return LinkHandler; }(); var DefaultLinkHandler = exports.DefaultLinkHandler = function (_LinkHandler) { _inherits(DefaultLinkHandler, _LinkHandler); function DefaultLinkHandler() { var _this = _possibleConstructorReturn(this, _LinkHandler.call(this)); _this.handler = function (e) { var _DefaultLinkHandler$g = DefaultLinkHandler.getEventInfo(e); var shouldHandleEvent = _DefaultLinkHandler$g.shouldHandleEvent; var href = _DefaultLinkHandler$g.href; if (shouldHandleEvent) { e.preventDefault(); _this.history.navigate(href); } }; return _this; } DefaultLinkHandler.prototype.activate = function activate(history) { if (history._hasPushState) { this.history = history; _aureliaPal.DOM.addEventListener('click', this.handler, true); } }; DefaultLinkHandler.prototype.deactivate = function deactivate() { _aureliaPal.DOM.removeEventListener('click', this.handler); }; DefaultLinkHandler.getEventInfo = function getEventInfo(event) { var info = { shouldHandleEvent: false, href: null, anchor: null }; var target = DefaultLinkHandler.findClosestAnchor(event.target); if (!target || !DefaultLinkHandler.targetIsThisWindow(target)) { return info; } if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) { return info; } var href = target.getAttribute('href'); info.anchor = target; info.href = href; var leftButtonClicked = event.which === 1; var isRelative = href && !(href.charAt(0) === '#' || /^[a-z]+:/i.test(href)); info.shouldHandleEvent = leftButtonClicked && isRelative; return info; }; DefaultLinkHandler.findClosestAnchor = function findClosestAnchor(el) { while (el) { if (el.tagName === 'A') { return el; } el = el.parentNode; } }; DefaultLinkHandler.targetIsThisWindow = function targetIsThisWindow(target) { var targetWindow = target.getAttribute('target'); var win = _aureliaPal.PLATFORM.global; return !targetWindow || targetWindow === win.name || targetWindow === '_self' || targetWindow === 'top' && win === win.top; }; return DefaultLinkHandler; }(LinkHandler); function configure(config) { config.singleton(_aureliaHistory.History, BrowserHistory); config.transient(LinkHandler, DefaultLinkHandler); } var BrowserHistory = exports.BrowserHistory = (_temp = _class = function (_History) { _inherits(BrowserHistory, _History); function BrowserHistory(linkHandler) { var _this2 = _possibleConstructorReturn(this, _History.call(this)); _this2._isActive = false; _this2._checkUrlCallback = _this2._checkUrl.bind(_this2); _this2.location = _aureliaPal.PLATFORM.location; _this2.history = _aureliaPal.PLATFORM.history; _this2.linkHandler = linkHandler; return _this2; } BrowserHistory.prototype.activate = function activate(options) { if (this._isActive) { throw new Error('History has already been activated.'); } var wantsPushState = !!options.pushState; this._isActive = true; this.options = Object.assign({}, { root: '/' }, this.options, options); this.root = ('/' + this.options.root + '/').replace(rootStripper, '/'); this._wantsHashChange = this.options.hashChange !== false; this._hasPushState = !!(this.options.pushState && this.history && this.history.pushState); var eventName = void 0; if (this._hasPushState) { eventName = 'popstate'; } else if (this._wantsHashChange) { eventName = 'hashchange'; } _aureliaPal.PLATFORM.addEventListener(eventName, this._checkUrlCallback); if (this._wantsHashChange && wantsPushState) { var loc = this.location; var atRoot = loc.pathname.replace(/[^\/]$/, '$&/') === this.root; if (!this._hasPushState && !atRoot) { this.fragment = this._getFragment(null, true); this.location.replace(this.root + this.location.search + '#' + this.fragment); return true; } else if (this._hasPushState && atRoot && loc.hash) { this.fragment = this._getHash().replace(routeStripper, ''); this.history.replaceState({}, _aureliaPal.DOM.title, this.root + this.fragment + loc.search); } } if (!this.fragment) { this.fragment = this._getFragment(); } this.linkHandler.activate(this); if (!this.options.silent) { return this._loadUrl(); } }; BrowserHistory.prototype.deactivate = function deactivate() { _aureliaPal.PLATFORM.removeEventListener('popstate', this._checkUrlCallback); _aureliaPal.PLATFORM.removeEventListener('hashchange', this._checkUrlCallback); this._isActive = false; this.linkHandler.deactivate(); }; BrowserHistory.prototype.getAbsoluteRoot = function getAbsoluteRoot() { var origin = createOrigin(this.location.protocol, this.location.hostname, this.location.port); return '' + origin + this.root; }; BrowserHistory.prototype.navigate = function navigate(fragment) { var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var _ref$trigger = _ref.trigger; var trigger = _ref$trigger === undefined ? true : _ref$trigger; var _ref$replace = _ref.replace; var replace = _ref$replace === undefined ? false : _ref$replace; if (fragment && absoluteUrl.test(fragment)) { this.location.href = fragment; return true; } if (!this._isActive) { return false; } fragment = this._getFragment(fragment || ''); if (this.fragment === fragment && !replace) { return false; } this.fragment = fragment; var url = this.root + fragment; if (fragment === '' && url !== '/') { url = url.slice(0, -1); } if (this._hasPushState) { url = url.replace('//', '/'); this.history[replace ? 'replaceState' : 'pushState']({}, _aureliaPal.DOM.title, url); } else if (this._wantsHashChange) { updateHash(this.location, fragment, replace); } else { return this.location.assign(url); } if (trigger) { return this._loadUrl(fragment); } }; BrowserHistory.prototype.navigateBack = function navigateBack() { this.history.back(); }; BrowserHistory.prototype.setTitle = function setTitle(title) { _aureliaPal.DOM.title = title; }; BrowserHistory.prototype.setState = function setState(key, value) { var state = Object.assign({}, this.history.state); state[key] = value; this.history.replaceState(state, null, null); }; BrowserHistory.prototype.getState = function getState(key) { var state = Object.assign({}, this.history.state); return state[key]; }; BrowserHistory.prototype._getHash = function _getHash() { return this.location.hash.substr(1); }; BrowserHistory.prototype._getFragment = function _getFragment(fragment, forcePushState) { var root = void 0; if (!fragment) { if (this._hasPushState || !this._wantsHashChange || forcePushState) { fragment = this.location.pathname + this.location.search; root = this.root.replace(trailingSlash, ''); if (!fragment.indexOf(root)) { fragment = fragment.substr(root.length); } } else { fragment = this._getHash(); } } return '/' + fragment.replace(routeStripper, ''); }; BrowserHistory.prototype._checkUrl = function _checkUrl() { var current = this._getFragment(); if (current !== this.fragment) { this._loadUrl(); } }; BrowserHistory.prototype._loadUrl = function _loadUrl(fragmentOverride) { var fragment = this.fragment = this._getFragment(fragmentOverride); return this.options.routeHandler ? this.options.routeHandler(fragment) : false; }; return BrowserHistory; }(_aureliaHistory.History), _class.inject = [LinkHandler], _temp); var routeStripper = /^#?\/*|\s+$/g; var rootStripper = /^\/+|\/+$/g; var trailingSlash = /\/$/; var absoluteUrl = /^([a-z][a-z0-9+\-.]*:)?\/\//i; function updateHash(location, fragment, replace) { if (replace) { var _href = location.href.replace(/(javascript:|#).*$/, ''); location.replace(_href + '#' + fragment); } else { location.hash = '#' + fragment; } } function createOrigin(protocol, hostname, port) { return protocol + '//' + hostname + (port ? ':' + port : ''); } }); define('aurelia-loader',['exports', 'aurelia-path', 'aurelia-metadata'], function (exports, _aureliaPath, _aureliaMetadata) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Loader = exports.TemplateRegistryEntry = exports.TemplateDependency = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var TemplateDependency = exports.TemplateDependency = function TemplateDependency(src, name) { this.src = src; this.name = name; }; var TemplateRegistryEntry = exports.TemplateRegistryEntry = function () { function TemplateRegistryEntry(address) { this.templateIsLoaded = false; this.factoryIsReady = false; this.resources = null; this.dependencies = null; this.address = address; this.onReady = null; this._template = null; this._factory = null; } TemplateRegistryEntry.prototype.addDependency = function addDependency(src, name) { var finalSrc = typeof src === 'string' ? (0, _aureliaPath.relativeToFile)(src, this.address) : _aureliaMetadata.Origin.get(src).moduleId; this.dependencies.push(new TemplateDependency(finalSrc, name)); }; _createClass(TemplateRegistryEntry, [{ key: 'template', get: function get() { return this._template; }, set: function set(value) { var address = this.address; var requires = void 0; var current = void 0; var src = void 0; var dependencies = void 0; this._template = value; this.templateIsLoaded = true; requires = value.content.querySelectorAll('require'); dependencies = this.dependencies = new Array(requires.length); for (var i = 0, ii = requires.length; i < ii; ++i) { current = requires[i]; src = current.getAttribute('from'); if (!src) { throw new Error(' element in ' + address + ' has no "from" attribute.'); } dependencies[i] = new TemplateDependency((0, _aureliaPath.relativeToFile)(src, address), current.getAttribute('as')); if (current.parentNode) { current.parentNode.removeChild(current); } } } }, { key: 'factory', get: function get() { return this._factory; }, set: function set(value) { this._factory = value; this.factoryIsReady = true; } }]); return TemplateRegistryEntry; }(); var Loader = exports.Loader = function () { function Loader() { this.templateRegistry = {}; } Loader.prototype.map = function map(id, source) { throw new Error('Loaders must implement map(id, source).'); }; Loader.prototype.normalizeSync = function normalizeSync(moduleId, relativeTo) { throw new Error('Loaders must implement normalizeSync(moduleId, relativeTo).'); }; Loader.prototype.normalize = function normalize(moduleId, relativeTo) { throw new Error('Loaders must implement normalize(moduleId: string, relativeTo: string): Promise.'); }; Loader.prototype.loadModule = function loadModule(id) { throw new Error('Loaders must implement loadModule(id).'); }; Loader.prototype.loadAllModules = function loadAllModules(ids) { throw new Error('Loader must implement loadAllModules(ids).'); }; Loader.prototype.loadTemplate = function loadTemplate(url) { throw new Error('Loader must implement loadTemplate(url).'); }; Loader.prototype.loadText = function loadText(url) { throw new Error('Loader must implement loadText(url).'); }; Loader.prototype.applyPluginToUrl = function applyPluginToUrl(url, pluginName) { throw new Error('Loader must implement applyPluginToUrl(url, pluginName).'); }; Loader.prototype.addPlugin = function addPlugin(pluginName, implementation) { throw new Error('Loader must implement addPlugin(pluginName, implementation).'); }; Loader.prototype.getOrCreateTemplateRegistryEntry = function getOrCreateTemplateRegistryEntry(address) { return this.templateRegistry[address] || (this.templateRegistry[address] = new TemplateRegistryEntry(address)); }; return Loader; }(); }); define('aurelia-loader-default',['exports', 'aurelia-loader', 'aurelia-pal', 'aurelia-metadata'], function (exports, _aureliaLoader, _aureliaPal, _aureliaMetadata) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultLoader = exports.TextTemplateLoader = undefined; function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var TextTemplateLoader = exports.TextTemplateLoader = function () { function TextTemplateLoader() { } TextTemplateLoader.prototype.loadTemplate = function loadTemplate(loader, entry) { return loader.loadText(entry.address).then(function (text) { entry.template = _aureliaPal.DOM.createTemplateFromMarkup(text); }); }; return TextTemplateLoader; }(); function ensureOriginOnExports(executed, name) { var target = executed; var key = void 0; var exportedValue = void 0; if (target.__useDefault) { target = target['default']; } _aureliaMetadata.Origin.set(target, new _aureliaMetadata.Origin(name, 'default')); for (key in target) { exportedValue = target[key]; if (typeof exportedValue === 'function') { _aureliaMetadata.Origin.set(exportedValue, new _aureliaMetadata.Origin(name, key)); } } return executed; } var DefaultLoader = exports.DefaultLoader = function (_Loader) { _inherits(DefaultLoader, _Loader); function DefaultLoader() { var _this = _possibleConstructorReturn(this, _Loader.call(this)); _this.textPluginName = 'text'; _this.moduleRegistry = Object.create(null); _this.useTemplateLoader(new TextTemplateLoader()); var that = _this; _this.addPlugin('template-registry-entry', { 'fetch': function fetch(address) { var entry = that.getOrCreateTemplateRegistryEntry(address); return entry.templateIsLoaded ? entry : that.templateLoader.loadTemplate(that, entry).then(function (x) { return entry; }); } }); return _this; } DefaultLoader.prototype.useTemplateLoader = function useTemplateLoader(templateLoader) { this.templateLoader = templateLoader; }; DefaultLoader.prototype.loadAllModules = function loadAllModules(ids) { var loads = []; for (var i = 0, ii = ids.length; i < ii; ++i) { loads.push(this.loadModule(ids[i])); } return Promise.all(loads); }; DefaultLoader.prototype.loadTemplate = function loadTemplate(url) { return this._import(this.applyPluginToUrl(url, 'template-registry-entry')); }; DefaultLoader.prototype.loadText = function loadText(url) { return this._import(this.applyPluginToUrl(url, this.textPluginName)).then(function (textOrModule) { if (typeof textOrModule === 'string') { return textOrModule; } return textOrModule['default']; }); }; return DefaultLoader; }(_aureliaLoader.Loader); _aureliaPal.PLATFORM.Loader = DefaultLoader; if (!_aureliaPal.PLATFORM.global.System || !_aureliaPal.PLATFORM.global.System.import) { if (_aureliaPal.PLATFORM.global.requirejs && requirejs.s && requirejs.s.contexts && requirejs.s.contexts._ && requirejs.s.contexts._.defined) { _aureliaPal.PLATFORM.eachModule = function (callback) { var defined = requirejs.s.contexts._.defined; for (var key in defined) { try { if (callback(key, defined[key])) return; } catch (e) {} } }; } else { _aureliaPal.PLATFORM.eachModule = function (callback) {}; } DefaultLoader.prototype._import = function (moduleId) { return new Promise(function (resolve, reject) { require([moduleId], resolve, reject); }); }; DefaultLoader.prototype.loadModule = function (id) { var _this2 = this; var existing = this.moduleRegistry[id]; if (existing !== undefined) { return Promise.resolve(existing); } return new Promise(function (resolve, reject) { require([id], function (m) { _this2.moduleRegistry[id] = m; resolve(ensureOriginOnExports(m, id)); }, reject); }); }; DefaultLoader.prototype.map = function (id, source) {}; DefaultLoader.prototype.normalize = function (moduleId, relativeTo) { return Promise.resolve(moduleId); }; DefaultLoader.prototype.normalizeSync = function (moduleId, relativeTo) { return moduleId; }; DefaultLoader.prototype.applyPluginToUrl = function (url, pluginName) { return pluginName + '!' + url; }; DefaultLoader.prototype.addPlugin = function (pluginName, implementation) { var nonAnonDefine = define; nonAnonDefine(pluginName, [], { 'load': function load(name, req, onload) { var result = implementation.fetch(name); Promise.resolve(result).then(onload); } }); }; } else { _aureliaPal.PLATFORM.eachModule = function (callback) { if (System.registry) { var keys = Array.from(System.registry.keys()); for (var i = 0; i < keys.length; i++) { try { var key = keys[i]; if (callback(key, System.registry.get(key))) { return; } } catch (e) {} } return; } var modules = System._loader.modules; for (var _key in modules) { try { if (callback(_key, modules[_key].module)) return; } catch (e) {} } }; System.set('text', System.newModule({ 'translate': function translate(load) { return 'module.exports = "' + load.source.replace(/(["\\])/g, '\\$1').replace(/[\f]/g, '\\f').replace(/[\b]/g, '\\b').replace(/[\n]/g, '\\n').replace(/[\t]/g, '\\t').replace(/[\r]/g, '\\r').replace(/[\u2028]/g, '\\u2028').replace(/[\u2029]/g, '\\u2029') + '";'; } })); DefaultLoader.prototype._import = function (moduleId) { return System.import(moduleId); }; DefaultLoader.prototype.loadModule = function (id) { var _this3 = this; return System.normalize(id).then(function (newId) { var existing = _this3.moduleRegistry[newId]; if (existing !== undefined) { return Promise.resolve(existing); } return System.import(newId).then(function (m) { _this3.moduleRegistry[newId] = m; return ensureOriginOnExports(m, newId); }); }); }; DefaultLoader.prototype.map = function (id, source) { var _map; System.config({ map: (_map = {}, _map[id] = source, _map) }); }; DefaultLoader.prototype.normalizeSync = function (moduleId, relativeTo) { return System.normalizeSync(moduleId, relativeTo); }; DefaultLoader.prototype.normalize = function (moduleId, relativeTo) { return System.normalize(moduleId, relativeTo); }; DefaultLoader.prototype.applyPluginToUrl = function (url, pluginName) { return url + '!' + pluginName; }; DefaultLoader.prototype.addPlugin = function (pluginName, implementation) { System.set(pluginName, System.newModule({ 'fetch': function fetch(load, _fetch) { var result = implementation.fetch(load.address); return Promise.resolve(result).then(function (x) { load.metadata.result = x; return ''; }); }, 'instantiate': function instantiate(load) { return load.metadata.result; } })); }; } }); define('aurelia-logging',['exports'], function (exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLogger = getLogger; exports.addAppender = addAppender; exports.removeAppender = removeAppender; exports.setLevel = setLevel; exports.getLevel = getLevel; var logLevel = exports.logLevel = { none: 0, error: 1, warn: 2, info: 3, debug: 4 }; var loggers = {}; var appenders = []; var globalDefaultLevel = logLevel.none; function appendArgs() { return [this].concat(Array.prototype.slice.call(arguments)); } function logFactory(level) { var threshold = logLevel[level]; return function () { if (this.level < threshold) { return; } var args = appendArgs.apply(this, arguments); var i = appenders.length; while (i--) { var _appenders$i; (_appenders$i = appenders[i])[level].apply(_appenders$i, args); } }; } function connectLoggers() { var proto = Logger.prototype; proto.debug = logFactory('debug'); proto.info = logFactory('info'); proto.warn = logFactory('warn'); proto.error = logFactory('error'); } function getLogger(id) { return loggers[id] || new Logger(id); } function addAppender(appender) { if (appenders.push(appender) === 1) { connectLoggers(); } } function removeAppender(appender) { appenders = appenders.filter(function (a) { return a !== appender; }); } function setLevel(level) { globalDefaultLevel = level; for (var key in loggers) { loggers[key].setLevel(level); } } function getLevel() { return globalDefaultLevel; } var Logger = exports.Logger = function () { function Logger(id) { var cached = loggers[id]; if (cached) { return cached; } loggers[id] = this; this.id = id; this.level = globalDefaultLevel; } Logger.prototype.debug = function debug(message) {}; Logger.prototype.info = function info(message) {}; Logger.prototype.warn = function warn(message) {}; Logger.prototype.error = function error(message) {}; Logger.prototype.setLevel = function setLevel(level) { this.level = level; }; return Logger; }(); }); define('aurelia-logging-console',['exports', 'aurelia-logging'], function (exports, _aureliaLogging) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConsoleAppender = undefined; var ConsoleAppender = exports.ConsoleAppender = function () { function ConsoleAppender() { } ConsoleAppender.prototype.debug = function debug(logger) { var _console; for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { rest[_key - 1] = arguments[_key]; } (_console = console).debug.apply(_console, ['DEBUG [' + logger.id + ']'].concat(rest)); }; ConsoleAppender.prototype.info = function info(logger) { var _console2; for (var _len2 = arguments.length, rest = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { rest[_key2 - 1] = arguments[_key2]; } (_console2 = console).info.apply(_console2, ['INFO [' + logger.id + ']'].concat(rest)); }; ConsoleAppender.prototype.warn = function warn(logger) { var _console3; for (var _len3 = arguments.length, rest = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { rest[_key3 - 1] = arguments[_key3]; } (_console3 = console).warn.apply(_console3, ['WARN [' + logger.id + ']'].concat(rest)); }; ConsoleAppender.prototype.error = function error(logger) { var _console4; for (var _len4 = arguments.length, rest = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { rest[_key4 - 1] = arguments[_key4]; } (_console4 = console).error.apply(_console4, ['ERROR [' + logger.id + ']'].concat(rest)); }; return ConsoleAppender; }(); }); define('aurelia-metadata',['exports', 'aurelia-pal'], function (exports, _aureliaPal) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Origin = exports.metadata = undefined; exports.decorators = decorators; exports.deprecated = deprecated; exports.mixin = mixin; exports.protocol = protocol; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; function isObject(val) { return val && (typeof val === 'function' || (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object'); } var metadata = exports.metadata = { resource: 'aurelia:resource', paramTypes: 'design:paramtypes', propertyType: 'design:type', properties: 'design:properties', get: function get(metadataKey, target, targetKey) { if (!isObject(target)) { return undefined; } var result = metadata.getOwn(metadataKey, target, targetKey); return result === undefined ? metadata.get(metadataKey, Object.getPrototypeOf(target), targetKey) : result; }, getOwn: function getOwn(metadataKey, target, targetKey) { if (!isObject(target)) { return undefined; } return Reflect.getOwnMetadata(metadataKey, target, targetKey); }, define: function define(metadataKey, metadataValue, target, targetKey) { Reflect.defineMetadata(metadataKey, metadataValue, target, targetKey); }, getOrCreateOwn: function getOrCreateOwn(metadataKey, Type, target, targetKey) { var result = metadata.getOwn(metadataKey, target, targetKey); if (result === undefined) { result = new Type(); Reflect.defineMetadata(metadataKey, result, target, targetKey); } return result; } }; var originStorage = new Map(); var unknownOrigin = Object.freeze({ moduleId: undefined, moduleMember: undefined }); var Origin = exports.Origin = function () { function Origin(moduleId, moduleMember) { this.moduleId = moduleId; this.moduleMember = moduleMember; } Origin.get = function get(fn) { var origin = originStorage.get(fn); if (origin === undefined) { _aureliaPal.PLATFORM.eachModule(function (key, value) { if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') { for (var name in value) { var exp = value[name]; if (exp === fn) { originStorage.set(fn, origin = new Origin(key, name)); return true; } } } if (value === fn) { originStorage.set(fn, origin = new Origin(key, 'default')); return true; } return false; }); } return origin || unknownOrigin; }; Origin.set = function set(fn, origin) { originStorage.set(fn, origin); }; return Origin; }(); function decorators() { for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) { rest[_key] = arguments[_key]; } var applicator = function applicator(target, key, descriptor) { var i = rest.length; if (key) { descriptor = descriptor || { value: target[key], writable: true, configurable: true, enumerable: true }; while (i--) { descriptor = rest[i](target, key, descriptor) || descriptor; } Object.defineProperty(target, key, descriptor); } else { while (i--) { target = rest[i](target) || target; } } return target; }; applicator.on = applicator; return applicator; } function deprecated(optionsOrTarget, maybeKey, maybeDescriptor) { function decorator(target, key, descriptor) { var methodSignature = target.constructor.name + '#' + key; var options = maybeKey ? {} : optionsOrTarget || {}; var message = 'DEPRECATION - ' + methodSignature; if (typeof descriptor.value !== 'function') { throw new SyntaxError('Only methods can be marked as deprecated.'); } if (options.message) { message += ' - ' + options.message; } return _extends({}, descriptor, { value: function deprecationWrapper() { if (options.error) { throw new Error(message); } else { console.warn(message); } return descriptor.value.apply(this, arguments); } }); } return maybeKey ? decorator(optionsOrTarget, maybeKey, maybeDescriptor) : decorator; } function mixin(behavior) { var instanceKeys = Object.keys(behavior); function _mixin(possible) { var decorator = function decorator(target) { var resolvedTarget = typeof target === 'function' ? target.prototype : target; var i = instanceKeys.length; while (i--) { var property = instanceKeys[i]; Object.defineProperty(resolvedTarget, property, { value: behavior[property], writable: true }); } }; return possible ? decorator(possible) : decorator; } return _mixin; } function alwaysValid() { return true; } function noCompose() {} function ensureProtocolOptions(options) { if (options === undefined) { options = {}; } else if (typeof options === 'function') { options = { validate: options }; } if (!options.validate) { options.validate = alwaysValid; } if (!options.compose) { options.compose = noCompose; } return options; } function createProtocolValidator(validate) { return function (target) { var result = validate(target); return result === true; }; } function createProtocolAsserter(name, validate) { return function (target) { var result = validate(target); if (result !== true) { throw new Error(result || name + ' was not correctly implemented.'); } }; } function protocol(name, options) { options = ensureProtocolOptions(options); var result = function result(target) { var resolvedTarget = typeof target === 'function' ? target.prototype : target; options.compose(resolvedTarget); result.assert(resolvedTarget); Object.defineProperty(resolvedTarget, 'protocol:' + name, { enumerable: false, configurable: false, writable: false, value: true }); }; result.validate = createProtocolValidator(options.validate); result.assert = createProtocolAsserter(name, options.validate); return result; } protocol.create = function (name, options) { options = ensureProtocolOptions(options); var hidden = 'protocol:' + name; var result = function result(target) { var decorator = protocol(name, options); return target ? decorator(target) : decorator; }; result.decorates = function (obj) { return obj[hidden] === true; }; result.validate = createProtocolValidator(options.validate); result.assert = createProtocolAsserter(name, options.validate); return result; }; }); define('aurelia-pal',['exports'], function (exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.AggregateError = AggregateError; exports.initializePAL = initializePAL; exports.reset = reset; function AggregateError(message, innerError, skipIfAlreadyAggregate) { if (innerError) { if (innerError.innerError && skipIfAlreadyAggregate) { return innerError; } var separator = '\n------------------------------------------------\n'; message += separator + 'Inner Error:\n'; if (typeof innerError === 'string') { message += 'Message: ' + innerError; } else { if (innerError.message) { message += 'Message: ' + innerError.message; } else { message += 'Unknown Inner Error Type. Displaying Inner Error as JSON:\n ' + JSON.stringify(innerError, null, ' '); } if (innerError.stack) { message += '\nInner Error Stack:\n' + innerError.stack; message += '\nEnd Inner Error Stack'; } } message += separator; } var e = new Error(message); if (innerError) { e.innerError = innerError; } return e; } var FEATURE = exports.FEATURE = {}; var PLATFORM = exports.PLATFORM = { noop: function noop() {}, eachModule: function eachModule() {}, moduleName: function (_moduleName) { function moduleName(_x) { return _moduleName.apply(this, arguments); } moduleName.toString = function () { return _moduleName.toString(); }; return moduleName; }(function (moduleName) { return moduleName; }) }; PLATFORM.global = function () { if (typeof self !== 'undefined') { return self; } if (typeof global !== 'undefined') { return global; } return new Function('return this')(); }(); var DOM = exports.DOM = {}; var isInitialized = exports.isInitialized = false; function initializePAL(callback) { if (isInitialized) { return; } exports.isInitialized = isInitialized = true; if (typeof Object.getPropertyDescriptor !== 'function') { Object.getPropertyDescriptor = function (subject, name) { var pd = Object.getOwnPropertyDescriptor(subject, name); var proto = Object.getPrototypeOf(subject); while (typeof pd === 'undefined' && proto !== null) { pd = Object.getOwnPropertyDescriptor(proto, name); proto = Object.getPrototypeOf(proto); } return pd; }; } callback(PLATFORM, FEATURE, DOM); } function reset() { exports.isInitialized = isInitialized = false; } }); define('aurelia-pal-browser',['exports', 'aurelia-pal'], function (exports, _aureliaPal) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports._DOM = exports._FEATURE = exports._PLATFORM = undefined; exports.initialize = initialize; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _PLATFORM = exports._PLATFORM = { location: window.location, history: window.history, addEventListener: function addEventListener(eventName, callback, capture) { this.global.addEventListener(eventName, callback, capture); }, removeEventListener: function removeEventListener(eventName, callback, capture) { this.global.removeEventListener(eventName, callback, capture); }, performance: window.performance, requestAnimationFrame: function requestAnimationFrame(callback) { return this.global.requestAnimationFrame(callback); } }; if (typeof FEATURE_NO_IE === 'undefined') { var test = function test() {}; if (test.name === undefined) { Object.defineProperty(Function.prototype, 'name', { get: function get() { var name = this.toString().match(/^\s*function\s*(\S*)\s*\(/)[1]; Object.defineProperty(this, 'name', { value: name }); return name; } }); } } if (typeof FEATURE_NO_IE === 'undefined') { if (!('classList' in document.createElement('_')) || document.createElementNS && !('classList' in document.createElementNS('http://www.w3.org/2000/svg', 'g'))) { (function () { var protoProp = 'prototype'; var strTrim = String.prototype.trim; var arrIndexOf = Array.prototype.indexOf; var emptyArray = []; var DOMEx = function DOMEx(type, message) { this.name = type; this.code = DOMException[type]; this.message = message; }; var checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) { if (token === '') { throw new DOMEx('SYNTAX_ERR', 'An invalid or illegal string was specified'); } if (/\s/.test(token)) { throw new DOMEx('INVALID_CHARACTER_ERR', 'String contains an invalid character'); } return arrIndexOf.call(classList, token); }; var ClassList = function ClassList(elem) { var trimmedClasses = strTrim.call(elem.getAttribute('class') || ''); var classes = trimmedClasses ? trimmedClasses.split(/\s+/) : emptyArray; for (var i = 0, ii = classes.length; i < ii; ++i) { this.push(classes[i]); } this._updateClassName = function () { elem.setAttribute('class', this.toString()); }; }; var classListProto = ClassList[protoProp] = []; DOMEx[protoProp] = Error[protoProp]; classListProto.item = function (i) { return this[i] || null; }; classListProto.contains = function (token) { token += ''; return checkTokenAndGetIndex(this, token) !== -1; }; classListProto.add = function () { var tokens = arguments; var i = 0; var ii = tokens.length; var token = void 0; var updated = false; do { token = tokens[i] + ''; if (checkTokenAndGetIndex(this, token) === -1) { this.push(token); updated = true; } } while (++i < ii); if (updated) { this._updateClassName(); } }; classListProto.remove = function () { var tokens = arguments; var i = 0; var ii = tokens.length; var token = void 0; var updated = false; var index = void 0; do { token = tokens[i] + ''; index = checkTokenAndGetIndex(this, token); while (index !== -1) { this.splice(index, 1); updated = true; index = checkTokenAndGetIndex(this, token); } } while (++i < ii); if (updated) { this._updateClassName(); } }; classListProto.toggle = function (token, force) { token += ''; var result = this.contains(token); var method = result ? force !== true && 'remove' : force !== false && 'add'; if (method) { this[method](token); } if (force === true || force === false) { return force; } return !result; }; classListProto.toString = function () { return this.join(' '); }; Object.defineProperty(Element.prototype, 'classList', { get: function get() { return new ClassList(this); }, enumerable: true, configurable: true }); })(); } else { var testElement = document.createElement('_'); testElement.classList.add('c1', 'c2'); if (!testElement.classList.contains('c2')) { var createMethod = function createMethod(method) { var original = DOMTokenList.prototype[method]; DOMTokenList.prototype[method] = function (token) { for (var i = 0, ii = arguments.length; i < ii; ++i) { token = arguments[i]; original.call(this, token); } }; }; createMethod('add'); createMethod('remove'); } testElement.classList.toggle('c3', false); if (testElement.classList.contains('c3')) { (function () { var _toggle = DOMTokenList.prototype.toggle; DOMTokenList.prototype.toggle = function (token, force) { if (1 in arguments && !this.contains(token) === !force) { return force; } return _toggle.call(this, token); }; })(); } testElement = null; } } if (typeof FEATURE_NO_IE === 'undefined') { // @license http://opensource.org/licenses/MIT if ('performance' in window === false) { window.performance = {}; } if ('now' in window.performance === false) { (function () { var nowOffset = Date.now(); if (performance.timing && performance.timing.navigationStart) { nowOffset = performance.timing.navigationStart; } window.performance.now = function now() { return Date.now() - nowOffset; }; })(); } _PLATFORM.performance = window.performance; } if (typeof FEATURE_NO_IE === 'undefined') { (function () { var con = window.console = window.console || {}; var nop = function nop() {}; if (!con.memory) con.memory = {}; ('assert,clear,count,debug,dir,dirxml,error,exception,group,' + 'groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,' + 'show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn').split(',').forEach(function (m) { if (!con[m]) con[m] = nop; }); if (_typeof(con.log) === 'object') { 'log,info,warn,error,assert,dir,clear,profile,profileEnd'.split(',').forEach(function (method) { console[method] = this.bind(console[method], console); }, Function.prototype.call); } })(); } if (typeof FEATURE_NO_IE === 'undefined') { if (!window.CustomEvent || typeof window.CustomEvent !== 'function') { var _CustomEvent = function _CustomEvent(event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; var evt = document.createEvent('CustomEvent'); evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); return evt; }; _CustomEvent.prototype = window.Event.prototype; window.CustomEvent = _CustomEvent; } } if (Element && !Element.prototype.matches) { var proto = Element.prototype; proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector; } var _FEATURE = exports._FEATURE = { shadowDOM: !!HTMLElement.prototype.attachShadow, scopedCSS: 'scoped' in document.createElement('style'), htmlTemplateElement: 'content' in document.createElement('template'), mutationObserver: !!(window.MutationObserver || window.WebKitMutationObserver), ensureHTMLTemplateElement: function ensureHTMLTemplateElement(t) { return t; } }; if (typeof FEATURE_NO_IE === 'undefined') { (function () { var isSVGTemplate = function isSVGTemplate(el) { return el.tagName === 'template' && el.namespaceURI === 'http://www.w3.org/2000/svg'; }; var fixSVGTemplateElement = function fixSVGTemplateElement(el) { var template = el.ownerDocument.createElement('template'); var attrs = el.attributes; var length = attrs.length; var attr = void 0; el.parentNode.insertBefore(template, el); while (length-- > 0) { attr = attrs[length]; template.setAttribute(attr.name, attr.value); el.removeAttribute(attr.name); } el.parentNode.removeChild(el); return fixHTMLTemplateElement(template); }; var fixHTMLTemplateElement = function fixHTMLTemplateElement(template) { var content = template.content = document.createDocumentFragment(); var child = void 0; while (child = template.firstChild) { content.appendChild(child); } return template; }; var fixHTMLTemplateElementRoot = function fixHTMLTemplateElementRoot(template) { var content = fixHTMLTemplateElement(template).content; var childTemplates = content.querySelectorAll('template'); for (var i = 0, ii = childTemplates.length; i < ii; ++i) { var child = childTemplates[i]; if (isSVGTemplate(child)) { fixSVGTemplateElement(child); } else { fixHTMLTemplateElement(child); } } return template; }; if (!_FEATURE.htmlTemplateElement) { _FEATURE.ensureHTMLTemplateElement = fixHTMLTemplateElementRoot; } })(); } var shadowPoly = window.ShadowDOMPolyfill || null; var _DOM = exports._DOM = { Element: Element, SVGElement: SVGElement, boundary: 'aurelia-dom-boundary', addEventListener: function addEventListener(eventName, callback, capture) { document.addEventListener(eventName, callback, capture); }, removeEventListener: function removeEventListener(eventName, callback, capture) { document.removeEventListener(eventName, callback, capture); }, adoptNode: function adoptNode(node) { return document.adoptNode(node, true); }, createAttribute: function createAttribute(name) { return document.createAttribute(name); }, createElement: function createElement(tagName) { return document.createElement(tagName); }, createTextNode: function createTextNode(text) { return document.createTextNode(text); }, createComment: function createComment(text) { return document.createComment(text); }, createDocumentFragment: function createDocumentFragment() { return document.createDocumentFragment(); }, createTemplateElement: function createTemplateElement() { var template = document.createElement('template'); return _FEATURE.ensureHTMLTemplateElement(template); }, createMutationObserver: function createMutationObserver(callback) { return new (window.MutationObserver || window.WebKitMutationObserver)(callback); }, createCustomEvent: function createCustomEvent(eventType, options) { return new window.CustomEvent(eventType, options); }, dispatchEvent: function dispatchEvent(evt) { document.dispatchEvent(evt); }, getComputedStyle: function getComputedStyle(element) { return window.getComputedStyle(element); }, getElementById: function getElementById(id) { return document.getElementById(id); }, querySelectorAll: function querySelectorAll(query) { return document.querySelectorAll(query); }, nextElementSibling: function nextElementSibling(element) { if (element.nextElementSibling) { return element.nextElementSibling; } do { element = element.nextSibling; } while (element && element.nodeType !== 1); return element; }, createTemplateFromMarkup: function createTemplateFromMarkup(markup) { var parser = document.createElement('div'); parser.innerHTML = markup; var temp = parser.firstElementChild; if (!temp || temp.nodeName !== 'TEMPLATE') { throw new Error('Template markup must be wrapped in a